首页 文章

创建隐式JWT时的Spring Boot OAuth2?

提问于
浏览
0

如何从OAuth2 SSO Principal 获取有关JWT的详细信息? ( OAuth2Authentication getDetails 的实例 OAuth2AuthenticationDetails getDecodedDetails 返回 null

我有...

  • Angular 6客户端w /隐式登录为 acme client(使用 angular-oauth2-oidc

  • Spring Boot OAuth2授权服务器,带JWT TokenService 配置w /第三方SSO到GitHub

  • Auth服务器配置为 acme as implicit 和GitHub客户端用于SSO

  • Auth服务器公开 /login/github

  • Auth服务器公开 /me (受ResourceServer配置保护)

当我登录时......

  • Angular app重定向到Auth服务登录

  • Auth服务重定向到GitHub

  • [用户验证]

  • GitHub重定向到Auth服务

  • Auth服务启动会话并发出令牌

  • Auth服务重定向到Angular

  • 浏览器令牌是一个合适的JWT

现在,当我与Auth服务 /me 沟通时:

  • 直接,我得到 Principal ,其中包含GitHub(yay)的所有详细信息

  • 间接来自Angular应用程序通过 Authorization: Bearer ... 标头传递令牌,我得到一个包含 acme client(ugh)的最小OAuth客户端信息的 Principal

我已经尝试了自定义 TokenEnhancer ,但 OAuth2Authentication 实例已经是最低限度,没有任何细节 . 并且,当从Angular启动调用时,它不希望共享会话 - 我想将详细信息放在JWT中) .

[Update #1]

我尝试了自定义 JwtAccessTokenConverter 并在 @EnableAuthorizationServer@EnableResourceServer (确保 /me endpoints )配置类中使用它 . 但它没有用 . 我仍然从 OAuth2Authentication 获得null详细信息 .

final JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setAccessTokenConverter(new CustomTokenConverter());

1 回答

相关问题