Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 春天RESTAPI的Oauth.2.0实现_Spring_Spring Boot_Spring Security - Fatal编程技术网

Spring 春天RESTAPI的Oauth.2.0实现

Spring 春天RESTAPI的Oauth.2.0实现,spring,spring-boot,spring-security,Spring,Spring Boot,Spring Security,如何使用SpringBoot和SpringSecurity将基本授权(登录+密码)与其他服务(google、github、facebook)的授权结合起来?有很多信息,我不知道如何正确解决这个问题。我将非常感谢本教程或该材料的链接。 Spring安全性使用过滤器链实现,每个职责分配给特定类型 例如,下图显示了用户名密码身份验证所涉及的组件 但是SpringSecurity框架允许在同一个应用程序中为每种类型有多个实现 如果您想要多个身份验证机制,那么可以为该机制的每个阶段提供具体实现的列表。例如

如何使用SpringBoot和SpringSecurity将基本授权(登录+密码)与其他服务(google、github、facebook)的授权结合起来?有很多信息,我不知道如何正确解决这个问题。我将非常感谢本教程或该材料的链接。

  • Spring安全性使用过滤器链实现,每个职责分配给特定类型
  • 例如,下图显示了用户名密码身份验证所涉及的组件
  • 但是SpringSecurity框架允许在同一个应用程序中为每种类型有多个实现
  • 如果您想要多个身份验证机制,那么可以为该机制的每个阶段提供具体实现的列表。例如,在您的情况下,在
    AuthenticationFilter
    中,用户名/密码身份验证机制将使用
    UsernamePasswordAuthenticationFilter
    ,而Oauth2登录机制将使用
    OAuth2LoginAuthenticationFilter
    。然后对于
    AuthenticationToken
    s,您将拥有
    UsernamePasswordAuthenticationToken
    OAuth2LoginAuthenticationToken
    。每个阶段都是如此
  • 现在,当http请求到达服务器时,在每个阶段,spring都会迭代该阶段的列表,直到其中一个满足或列表完成。例如,如果请求带有
    密码
    参数(或者您知道它总是来自
    /login
    url),则在
    身份验证筛选器
    处,
    OAuth2LoginAuthenticationFilter
    将满足该请求,它将创建
    用户名密码身份验证令牌
    ,并将其传递到第三阶段。但如果请求带有令牌,它将满足
    OAuth2LoginAuthenticationFilter
    ,并将创建
    OAuth2LoginAuthenticationToken
    ,并将其传递到第三阶段
我希望这能给你一个高层次的画面,只需实现一个仅使用用户名和密码的示例应用程序,在我提到的源代码spring安全类中设置断点,并查看它在每个阶段是如何迭代的

一旦您确定这些过滤器是如何链接的,那么请尝试添加类似ldap身份验证的内容作为应用程序的第二种身份验证机制

一旦您确信实现了这2个,就可以通过以下方式添加OAuth2

参考图:

  • Spring安全性使用过滤器链实现,每个职责分配给特定类型
  • 例如,下图显示了用户名密码身份验证所涉及的组件
  • 但是SpringSecurity框架允许在同一个应用程序中为每种类型有多个实现
  • 如果您想要多个身份验证机制,那么可以为该机制的每个阶段提供具体实现的列表。例如,在您的情况下,在
    AuthenticationFilter
    中,用户名/密码身份验证机制将使用
    UsernamePasswordAuthenticationFilter
    ,而Oauth2登录机制将使用
    OAuth2LoginAuthenticationFilter
    。然后对于
    AuthenticationToken
    s,您将拥有
    UsernamePasswordAuthenticationToken
    OAuth2LoginAuthenticationToken
    。每个阶段都是如此
  • 现在,当http请求到达服务器时,在每个阶段,spring都会迭代该阶段的列表,直到其中一个满足或列表完成。例如,如果请求带有
    密码
    参数(或者您知道它总是来自
    /login
    url),则在
    身份验证筛选器
    处,
    OAuth2LoginAuthenticationFilter
    将满足该请求,它将创建
    用户名密码身份验证令牌
    ,并将其传递到第三阶段。但如果请求带有令牌,它将满足
    OAuth2LoginAuthenticationFilter
    ,并将创建
    OAuth2LoginAuthenticationToken
    ,并将其传递到第三阶段
我希望这能给你一个高层次的画面,只需实现一个仅使用用户名和密码的示例应用程序,在我提到的源代码spring安全类中设置断点,并查看它在每个阶段是如何迭代的

一旦您确定这些过滤器是如何链接的,那么请尝试添加类似ldap身份验证的内容作为应用程序的第二种身份验证机制

一旦您确信实现了这2个,就可以通过以下方式添加OAuth2


参考图:

这是否回答了您的问题?这是一个非常琐碎的问题。看看这里,这能回答你的问题吗?这是一个非常琐碎的问题。看这里,我把你的答案标记为我问题的答案。谢谢你我把你的答案记下来作为我问题的答案。谢谢)