java 自定义登录密钥罩

bfhwhh0e  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(123)

我使用Keycloak服务器和auten,其中grant_type = authorization_code。我有API(Sping Boot )get-token-by-code,其中输入为authorizationCode + redirectUrl,用于验证该用户,并通过调用/realms/{realm-id}/protocol/openid-connect/token从Keycloak服务器为用户生成令牌。
1.我需要从authorizationCode或somethingelse获取用户名,以获取更新用户信息调用API到其他。
1.用户续订后,我将从Keycloak服务器调用/realms/{realm-id}/protocol/openid-connect/token以获取令牌--〉每个信息用户都已更新,新的用户信息洞察令牌是新的--〉解决了我的问题。
那么我该怎么做呢。有什么想法请帮助我。我觉得有两种方法可以做:
1.从authorizationCode获得用户名(但我在谷歌搜索了很多东西,但没有找到解决方案)
1.自定义/realms/{realm-id}/protocol/openid-connect/token和java代码--〉我还没有找到。欢迎在这里发表评论。

ffscu2ro

ffscu2ro1#

在授权代码流中,访问令牌由客户端(UI)获取,而不是由资源服务器(REST API)获取。
客户:

  • 将用户重定向到授权服务器
  • 从授权服务器重定向返回获得授权码
  • 向授权服务器发送请求以交换令牌的授权码(访问、ID和刷新)
  • 使用刷新令牌流维护有效的访问令牌
  • 授权请求到资源服务器(设置带有access-token的授权头)

资源服务器只是验证访问令牌,然后根据其内容做出访问控制决策。
可以从访问或ID令牌(如果令牌是JWT,则在令牌本身内部,或者从授权服务器内省端点)检索有关用户的信息,而不是从授权代码(仅用于交换令牌)检索。
您可能在授权代码流实现细节方面研究得太多(方向错误),因为您没有使用OAuth2客户端库来处理上面列出的所有功能。请为您的客户端框架选择certified OpenID lib

相关问题