KeyCloak /userinfo 不返回用户信息,返回似乎是一个令牌
Posted
技术标签:
【中文标题】KeyCloak /userinfo 不返回用户信息,返回似乎是一个令牌【英文标题】:KeyCloak /userinfo not returning user info, returns what appears to be a token 【发布时间】:2021-11-28 14:53:05 【问题描述】:这是我在邮递员中尝试的流程。
-
获取访问令牌
server/auth/realms/realm/protocol/openid-connect/token
我得到了访问令牌。然后我运行下一个查询
-
server/auth/realms/realm/protocol/openid-connect/userinfo
我把这些放在标题中 内容类型:application/x-www-form-urlencoded 授权:承载access_token
我得到一个随机字符串作为回报 eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJnN0FHMmJXMmhmQzBLTHJ0S1NUV2V4eTBGWVhsYklybXVEdnF0aDF2MFpNIn0.eyJzdWIiOiIxOGI0OTJhMy0wOGFlLTQ2NjQtODBjNi1iZGQ5Nzk2ODdiMzQiLCJhdWQiOiJibGluZHNwb3QtYXV0aCIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hdXRoL3JlYWxtcy9CbGluZHNwb3QifQ.UNyZ2AifgqK9NAiSVwWMFT4_EEleMBztodPHu19NrzIt0DUteK4gfYlgAf-Yfk6w3ue3TyjpD93HFlM-1AG2bHgIyIxI01IbEB2ew9b8xgLiexLrQkgQHIWWWFxSOqQCBo0VPgY3yi0ib3sqeBAcxpvfOhtvQuEH0lHdPFXh8DTJQL18Q3TAhTRpknpwIQ5mpjhaeIW2HXpExrPp6-35r2riPifS_nFNaTqPTSWAFHBiqFEa2_PnQcC6f09jGQYYGkjHnetuAdcmxmhskb59YYlqvRpvezi-Af9IHNhCDad0zomMJK5ajIYUcaXWpAuQZMhPp1OvTB79Olc-YUUOIg P>
【问题讨论】:
【参考方案1】:用户信息规范未指定 Content-Type: application/x-www-form-urlencoded
标头 - 请参阅 https://openid.net/specs/openid-connect-core-1_0.html#UserInfoRequest
因此,仅使用标准 GET 请求 server/auth/realms/realm/protocol/openid-connect/userinfo
和 Authorization: Bearer access_token
标头。
【讨论】:
我删除了 content-type 并且它返回了相同的信息。 @MichaelMcDermott 你确定你使用的是当前的 Keycloak 版本(15)吗?你在使用访问令牌吗?你在邮递员和 keycloak 之间没有任何拦截器(代理、LB、WAF ......)? 我正在使用当前版本。我能够成功获得令牌。当我在 keycloak 中更新范围等时,返回数据会发生变化,但它不会以 json 形式返回 @MichaelMcDermott 你有没有返回用户信息声明的客户端级别的映射器?【参考方案2】:要获取用户信息,您必须使用此端点发出获取请求:keycloak_url/auth/realms/realm/protocol/openid-connect/userinfo, in Authorization : 持有令牌
【讨论】:
以上是关于KeyCloak /userinfo 不返回用户信息,返回似乎是一个令牌的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak, openId-connect userInfo
未定义的 Keycloak 属性 Authenticated 和 UserInfo