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

How do protocol mappers work in Keycloak?

我正在尝试将用户属性添加到声明中的示例。我正在按照示例 here 进行操作。我正在尝试访问过滤器中的声明但未成功。

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

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

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

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

I would want to understand how the protocol mappers work behind the scenes.

粗略地说,JWT 基本上是基于特定 standard, Keycloak creates that object with the Registered claims 的编码 JSON 对象(例如, IssuerSubject 等等),然后它会将自定义声明(协议映射器)应用到那个临时按照您为该给定协议映射器定义的优先级排序对象。

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