在 Spring Boot 应用程序中,我使用 Spring Security 和 Spring OAuth2 保护我的 Spring MVC REST 端点。我有自己的授权\资源服务器,因此为了与我们的 API 通信,客户端(AngularJS)需要从我的 API 授权服务器获取 accessToken。
一切正常,但为了在我的 API 上进行身份验证/授权,用户需要创建他的帐户并向我们提供他的用户名/密码。
我想简化这个过程,并建议用户通过 Google/Facebook/Twitter oAuth 提供商在我的 API 上进行身份验证。
现在我还不清楚它是如何工作的。例如我的想法之一 - Facebook 将发行自己的 accessToken 并将其传递回我的 API。基于此 accessToken,我的 API 将发出自己的 accessToken 并将其传递回客户端应用程序(AngularJS)。或者我应该将 Facebook accessToken 直接传递给客户端应用程序?
对于所描述的情况,正确的架构是什么?应该如何运作?
也许有一些例子可以演示这种基于 Spring 框架的架构?
如果您想将身份验证委托给外部提供商,您可以使用OAuth2ClientAuthenticationProcessingFilter
,或者中提供的方便注释和外部配置春季云安全。示例(来自 Spring Cloud Security 主页):
应用程序.java:
@SpringBootApplication
@EnableOAuth2Sso
public class Application {
...
}
应用程序.yml:
spring:
oauth2:
client:
clientId: bd1c0a783ccdd1c9b9e4
clientSecret: 1a9030fbca47a5b2c28e92f19050bb77824b5ad1
accessTokenUri: https://github.com/login/oauth/access_token
userAuthorizationUri: https://github.com/login/oauth/authorize
clientAuthenticationScheme: form
resource:
userInfoUri: https://api.github.com/user
preferTokenInfo: false
如果你的应用程序在端口 8080 上运行(我相信),那么这适用于 github。类似的配置适用于 facebook、cloud foundry、google 和其他 OAuth2 提供商。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)