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/userinfoAuthorization: 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

Keycloak 直接访问授权在 keycloak userinfo 端点上无效

Keycloak - 用户信息响应中缺少数据

Keycloak:从用户个人资料页面返回

微信用户资料