【发布时间】:2018-12-29 14:07:31
【问题描述】:
我在这个解决方案上投入了 50 多个小时,如果有任何意见,我将不胜感激。
我有一个使用 Angular + Spring + JWT 无状态身份验证 (myApp) 生成的 JHipster 4.x 应用程序。我正在为经过身份验证的 myApp 用户连接第 3 方 OAuth 2 接口(battle.net)到针对 Battle.net 的 OAuth,这样我们就可以证明他们拥有 Battle.net 帐户并提取他们的 Battle.net 用户 ID,以便将帐户链接到我的应用程序。所以 JWT 南行,OAuth2 北行。
JWT 工作正常,OAuth 似乎工作正常。我正在苦苦挣扎,因为 myApp 使用无状态 JWT 令牌,而 Spring @EnableOAuth2Client 使用 JSESSIONID,我似乎无法将两者结合在一起,因此我可以将从战网调用返回的数据与 myApp 主体相关联。 Battle.net 在成功验证后使用回调 URL,我可以在 myApp PrincipalExtractor 和 myApp AuthenticationSuccessHandler 中看到有效数据,但由于没有提供 JWT 令牌,我无法将 Battle.net 数据链接到 myApp用户。
** 用户发起 OAuth **
用户 -- JWT --> myApp /login/battlenet --> Battle.net /oauth/*
**战网回调成功**
battle.net --> myApp /callback/battlenet - 这是很好的战网数据,但没有 JWT 令牌,因此 Principal 是 anonymousUser。
我看到 '&redirectUri=xxx&response_type=yyy&code=xxx' 在 '/oauth/authorize' 请求中被传递给了战网。有没有办法通过@EnableOAuth2Client 将链接数据传递到根据OAuth2 规范在回调中返回的battle.net?我认为这会解决我的问题。
spring-core-4.3.13 spring-boot-starter-security-1.5.9 spring-security-core-4.2.4 spring-security-oauth2-2.0.14
谢谢!
【问题讨论】:
标签: oauth-2.0 jwt jhipster spring-security-oauth2