首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring OAuth2资源服务器中获取用户名/用户信息

如何在Spring OAuth2资源服务器中获取用户名/用户信息
EN

Stack Overflow用户
提问于 2022-05-19 08:02:29
回答 2查看 1.4K关注 0票数 1

我有一个api,它使用AD令牌进行授权。我试图在服务组件中获取用户的用户名。但我没能。我试过这个。

代码语言:javascript
复制
        val authentication: Authentication = SecurityContextHolder.getContext().authentication
        println(authentication.name) // Random short string with 3 "-". Not JWT
        println(authentication.details.toString()) // WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null]
        println(authentication.authorities.toString()) // Prints Scope [SCOPE_User.Read]
        println(authentication.principal) // org.springframework.security.oauth2.jwt.Jwt@xxxxxxxx

令牌来自AD,它确实包含用户数据。有效负载包含这些字段以及与用户相关的内容。我把剩下的都拿走了。

代码语言:javascript
复制
{,
  "family_name": "Wick",
  "given_name": "John",
  "name": "WickJohn",
  "roles": [
    "User"
  ],
  "scp": "User.Read",
  "unique_name": "wickjo@gmail.com",
  "upn": "wickjo@gmail.com",,
}

有人知道吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-20 09:32:33

我只需手动阅读jwt就可以轻松地解决这个问题。

代码语言:javascript
复制
val authentication = SecurityContextHolder.getContext().authentication
val jwt = authentication.principal as Jwt
println(jwt.claims["name"])

如果能找出为什么我没有自动得到它还是很有趣的

票数 1
EN

Stack Overflow用户

发布于 2022-05-19 10:48:00

若要获取中的用户名/用户信息,请尝试以下操作:

  • 也要确保在resource server中配置Authorization Server
  • 为了通过令牌获取用户信息,resource server提供了一个筛选器resource server
  • 生成的令牌被设置为SecurityContextHolder.。
  • 否则是,在访问userinfo时,尝试将访问令牌包含在标题中(授权行者)。

如果上面的代码不起作用,那么尝试使用On Behalf Of Flow和这个https://github.com/gary-archer/oauth.websample.azure/blob/master/api/src/host/oauth/authenticator.ts博客中提到的代码。

有关更多信息,请参考下面的链接

Azure AD2.0故障排除- OAuth体系结构指南(authguidance.com)

如何在spring安全oauth2授权服务器中通过jwt令牌获取用户信息?-堆栈溢出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72300798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档