Keycloak, openId-connect userInfo

Posted

技术标签:

【中文标题】Keycloak, openId-connect userInfo【英文标题】: 【发布时间】:2017-02-09 01:59:31 【问题描述】:

我正在尝试使用 Keycloak 的 openId-connect 端点获取有关用户角色的信息。我正在使用 /auth/realms/moje/protocol/openid-connect/userinfo 端点来获取有关经过身份验证的用户的信息。我可以获得有关姓名、用户名、电子邮件等的信息,但我无法强制 Keyclak 向我提供有关用户角色的信息。

我已经阅读了 openID 文档,但没有找到任何关于 got to get roles 的信息...我认为必须有一种方法可以找出用户角色...也许还有另一个端点...我找不到任何信息...

所以最后我的问题是:有没有办法使用 openID 连接端点获取有关用户角色的信息?

【问题讨论】:

【参考方案1】:

如果您有客户端密钥,那么您可以通过传递该密钥来获取用户角色信息。

【讨论】:

我做了,client_secret 将被普通发送,并且没有任何变化,userinfo 响应中仍然缺少角色数据。 好的,我找到了。其实情况要复杂的多,these answers解释的更详细。仅仅通过client_secret 可能还不够!【参考方案2】:

您可以在 JWT 下找到所有关联的角色。无需调用端点。 /auth/realms/moje/protocol/openid-connect/userinfo是检查JWT的合法性。

【讨论】:

如果您为技术用户发行长期代币,它可能会很有用。已授予的角色可能会被撤销,但 JWT 仍然是正确的。 user-info 返回实际角色

以上是关于Keycloak, openId-connect userInfo的主要内容,如果未能解决你的问题,请参考以下文章

限制来自未知来源的 openid-connect 用户信息请求

设置 openid-connect 基础设施

Keycloak注销请求不会注销用户

让当前用户登录 Keycloak 的最简单方法

keycloak~自定义登出接口

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