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

cha*_*sad 3 java spring-security spring-boot keycloak keycloak-services

我正在尝试一个示例来将用户属性添加到声明中。我正在按照此处的示例进行操作。我正在尝试访问过滤器中的声明,但没有成功。

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

dre*_*ash 5

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

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

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

我想了解协议映射器在幕后如何工作。

粗略地说,将会发生的情况是,JWT 基本上是基于特定标准的编码 JSON 对象,Keycloak 使用注册声明(例如 Issuer,Subject等等)创建该对象,然后它将应用自定义声明(即, 协议映射器)按照您为给定协议映射器定义的优先级顺序转换到该临时对象。

最终结果(即令牌)将是带有默认声明以及使用协议映射器添加的声明的 JWT。