【问题标题】:Keycloak - Missing data in the userinfo responseKeycloak - 用户信息响应中缺少数据
【发布时间】:2020-02-23 07:37:56
【问题描述】:

当我点击/auth/realms/{realm}/protocol/openid-connect/userinfo 时,我得到的关于用户的详细信息很少。

{
    "sub": "ed291f7a-a799-4d8b-a776-e634d727668c",
    "email_verified": true,
    "preferred_username": "admin"
}

更多信息(例如角色列表)位于我实际发送到此端点的访问令牌中。我可以只解码访问令牌而不是点击这个端点,这是预期/正常的行为还是我做错了什么?

【问题讨论】:

  • 请分享您发送到userinfo端点的请求

标签: openid keycloak


【解决方案1】:

通过执行以下操作,我设法将“客户端角色”和“领域角色”添加到 Userinfo 负载:

  1. 转到客户端范围 > 角色映射器 > 领域角色
  2. 打开“添加到用户信息”,关闭“添加到令牌”
  3. 将“令牌声明名称”更改为您想要的任何名称,任何方法都可以

同样适用于客户端角色,1. 变为客户端范围 > 角色映射器 > 客户端角色
注意:角色必须位于“范围”标签中的“已分配”列中

【讨论】:

    【解决方案2】:

    对我来说,解决方案是使用自定义 Token Claim Name 制作自定义映射器。 realm_access.roles 来自预定义映射器的 fsr 不起作用

    【讨论】:

      【解决方案3】:

      响应中的字段由访问令牌中的声明限定。

      Keycloak 符合 OpenID。

      OpenID 规范defines

      UserInfo 端点是一个 OAuth 2.0 保护资源,它返回 关于经过身份验证的最终用户的声明。获取请求的 关于最终用户的声明,客户端向 UserInfo 发出请求 使用通过 OpenID Connect 获得的访问令牌的端点 验证。这些声明通常由 JSON 对象表示 包含声明的名称和值对的集合。

      Section 5.1 中定义的声明可以返回,同样可以 此处未指定的其他声明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多