Keycloak访问令牌与UserInfo令牌?

Mel*_*ssa 7 oauth oauth-2.0 openid-connect keycloak

使用Keycloak时,访问令牌与用户信息令牌有何不同?

从OAuth2 / OpenIDConnect中,我了解到访问令牌会提供用户已通过身份验证的信息,并且您需要使用用户信息令牌来获取有关用户及其配置文件/角色等的更多信息。

当我以https://jwt.io/或UserInfo令牌之类的方式查看访问令牌时。我能够获得有关用户个人资料和角色的相同信息。

为什么会这样?使用Keycloak时访问令牌与用户信息令牌有何不同?

Xtr*_*ica 7

访问令牌旨在为您提供对应用程序资源的访问权限。为了获得访问令牌,您必须使用spec定义的任何流对自己进行身份验证。在 keycloak 中,访问令牌包含用户名和角色,但您也可以使用管理面板添加自定义声明。添加一些声明可能很有用,因为令牌是在每个请求中发送的,您可以从应用程序中对其进行解码。

根本没有用户信息令牌,实际上它是一个端点。此端点使用您在第一步中获得的访问令牌进行访问,并且通常会提供一个 JSON 响应,其中包含有关用户的详细信息(例如用户数据、角色...)。


Mel*_*ssa 6

我设法弄清楚如何在将 Keyclok 用于这两个端点时获取不同的数据:

Keycloak 为“OIDC 令牌和 SAML 断言映射”提供功能,您还可以“控制声明的放置位置”。通过使用按钮: - 添加到 ID 令牌 - 添加到访问令牌 - 添加到用户信息 通过将某些映射器的“添加到 ID 令牌”和“添加到访问令牌”设置为关闭。这些将不会包含在 AccessToken 中,因为它们将包含在 UserInfo 响应中。

http://www.keycloak.org/docs/latest/server_admin/index.html#_protocol-mappers