Keycloak 中的协议映射器如何工作?

Posted

技术标签:

【中文标题】Keycloak 中的协议映射器如何工作?【英文标题】:How do protocol mappers work in Keycloak? 【发布时间】:2021-06-27 11:39:07 【问题描述】:

我正在尝试将用户属性添加到声明的示例。我正在关注示例here。我正在尝试访问过滤器中的声明,但未成功。

我想了解协议映射器是如何在幕后工作的,即那些来自该协议的声明是如何以及以何种顺序添加到令牌中的。

【问题讨论】:

【参考方案1】:

在 Keycloak 中,协议映射器的功能是向 JWT 添加额外的声明,而不是 Keyloack 默认添加的声明。

不同的协议映射器将有不同的选项,但对于其中的大多数,您可以选择将这些映射器将产生的声明添加到:

ID 令牌; 访问令牌; 用户信息;

我想了解协议映射器在 场景。

粗略地说,JWT 基本上是一个基于特定 standard 的编码 JSON 对象,Keycloak 使用 the Registered claims 创建该对象(例如, Issuer,@ 987654324@ 等等),然后它将按照您为给定的优先顺序将自定义声明(协议映射器)应用到该临时对象中协议映射器。

最终结果(令牌)将是一个带有默认声明的 JWT,并且声明是通过协议映射器添加的。

【讨论】:

以上是关于Keycloak 中的协议映射器如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keycloak 中创建脚本映射器?

使用 kcadm.sh 在 Keycloak 中创建协议映射器

keycloak - 使用 kcadm.sh 将协议映射器添加到 keycloak

keycloak 从自定义协议映射器抛出身份验证错误

Keycloak 使用自定义协议映射器从数据库/外部源添加额外声明

Keycloak 客户端映射器将领域名称显示为 JWT 令牌中的单个属性