如何获取在keycloak中userinfo端点的答复中包含的角色。我在密钥斗篷中为用户定义了“角色映射”。当我呼叫userinfo端点时,我得到诸如电子邮件名称等字段,但角色未包含在回复中。当我调用auth端点时,我获得了access_token,并且在该范围内包含了角色。这是auth端点的回复:
access_token" QJsonValue(string, "eyJhb...")
"expires_in" QJsonValue(double, 300)
"not-before-policy" QJsonValue(double, 0)
"refresh_expires_in" QJsonValue(double, 1800)
"refresh_token" QJsonValue(string, "eyJhb...")
"scope" QJsonValue(string, "profile email roles")
"session_state" QJsonValue(string, "20b48536-4b38-4aa6-9072-e8309833402e")
"token_type" QJsonValue(string, "bearer")
我还尝试使用属性“ scope = roles”调用userinfo端点,但这没有用。
答案 0 :(得分:3)
在Client Scopes -> roles -> Mappers -> realm roles/client roles
中将声明重命名,即将realm_access.roles
重命名为realm_accessy.roles
(并将Add to userinfo
设置为ON)时,该声明包含在userinfo中:-/
答案 1 :(得分:2)
正如已经提到的那样,这是一个错误。我听说它已在最新版本的keycloak中修复。
我最终使用此设置进行了修复,而没有升级到密钥斗篷的固定版本。
添加用户领域角色时,它将具有“ realm_access.roles” 作为令牌声明名称。您需要将其更改为“角色” 。然后它将在userinfo中正确显示。
答案 2 :(得分:1)
在Keycloak的映射器页面上,有一个名为Add to userinfo
的设置必须启用。