相关疑难解决方法(0)

整合Spring Security OAuth2和Spring Social

我正在使用Spring Boot + Spring Security OAuth2应用程序,我认为该应用程序的灵感来自Dave Syer的示例.应用程序配置为OAuth2授权服务器,单个公共客户端使用资源所有者密码凭据流.成功的令牌配置为JWT.

公共Angular客户端向/ oauth/token发送一个POST请求,其中包含一个包含客户端ID和密码的基本auth头(这是让客户端进行身份验证的最简单方法,即使秘密不是私有的).请求正文包含用户名,密码和授予类型"密码".

除了作为身份验证服务器之外,该应用程序还是用户,团队和组织的RESTful资源服务器.

我正在尝试使用Spring Social添加额外的SSO身份验证流程.我已经将Spring Social配置为通过/ auth/[provider]通过外部提供程序进行身份验证; 但是,以下请求不再正确设置SecurityContext.可能是Spring Security OAuth服务器或客户端覆盖了SecurityContext?

如果我可以在Spring Social流程之后正确设置SecurityContext,我有一个新的TokenGranter,允许新的授权类型"social",它将检查SecurityContextHolder以获得预先认证的用户.

我对SecurityContext的特定问题的解决方案感兴趣(我认为这是Spring OAuth +社交集成的问题),或者是与外部提供程序进行身份验证以及从我们自己的auth服务器获取有效JWT的不同方法.

谢谢!

spring-security single-sign-on spring-social spring-boot spring-security-oauth2

32
推荐指数
2
解决办法
8589
查看次数

休息,Spring自己的OAuth2服务器+ OAuth2提供商,如Facebook,谷歌,雅虎

在Spring Boot应用程序中,我使用Spring Security和Spring OAuth2保护了我的Spring MVC REST端点.我有自己的Authorization\Resource服务器,所以为了与我们的API通信,客户端(AngularJS)需要从我的API授权服务器获取acessToken.

一切正常,但对于我的API的身份验证/授权,用户需要创建他的帐户并向我们提供他的用户名/密码.

我想简化此过程,并建议用户通过Google/Facebook/Twitter oAuth提供商对我的API进行身份验证.

现在我还不清楚它是如何运作的.例如我的一个想法 - Facebook将发布自己的accessToken并将其传递回我的API.基于此accessToken,我的API将发出自己的accessToken并将其传递回客户端应用程序(AngularJS).或者我应该直接将Facebook accessToken传递给客户端应用程序?

所述案例的正确架构是什么?它应该如何工作?

也许有一些例子可以演示基于Spring框架的这种架构?

spring spring-security oauth-2.0 spring-social spring-security-oauth2

11
推荐指数
1
解决办法
3277
查看次数