在授权代码流

时间:2017-12-14 14:40:36

标签: spring spring-security oauth-2.0 saml-2.0 spring-security-oauth2

情况:

  • 启动并运行Spring Boot Service,充当OAuth2授权服务器,授予JWT访问令牌。
  • 仅支持password grant_type ATM(查找数据库中的凭据)。

问题/目标:

  • 有些客户希望将自己的SSO服务器(AD + SAML 2)连接到此应用程序,以便用户可以使用其公司凭据登录。
  • 我们只想使用SAML 2进行身份验证,然后向这些用户授予JWT,因此我们无需更改所有客户端。

根据this draftthis Blog Post,似乎可以使用authorization_code授权类型。

所以做这样的请求:

 POST /token.oauth2 HTTP/1.1
 Host: as.example.com
 Content-Type: application/x-www-form-urlencoded

 grant_type=authorization_code&
 code=vAZEIHjQTHuGgaSvyW9hO0RpusLzkvTOww3trZBxZpo&
 client_assertion_type=urn%3Aietf%3Aparams%3Aoauth
 %3Aclient-assertion-type%3Asaml2-bearer&
 client_assertion=PHNhbW...[omitted for brevity]...ZT

哪个可以返回包含OAuth访问令牌的JWT令牌。这没关系,但我很难弄清楚如何使用Spring Security OAuth2和现有的Spring Security SAML 2扩展/库实现这一点。

这是我的具体问题:

  1. spring security oauth 提供AuthorizationCodeServices接口,该接口可以实现和配置以使用grant_type=authorization_code处理OAuth Authenticait请求。我不确定如何创建OAuth2Authentication实例以便在consumeAuthorizationCode(String)中返回,因为在调用createAuthorizationCode时我无法坚持它(如在InMemoryAuthorizationCodeServices中)因为据我所知,SAML / OAuth2 /授权令牌流程永远不会被调用consumeAuthorizationCode(String)。也许AuthorizationCodeServices也不是正确的做法?
  2. 我发现Spring的最佳SAML 2实现是Spring Security SAML Extension。但我发现参考文档相当混乱。我似乎无法弄清楚扩展是否可用于仅针对各种IdP验证传入令牌,或者这只能单独使用。也许有人已经有经验并且可以给我提示?

0 个答案:

没有答案