Keycloak 客户端映射器将领域名称显示为 JWT 令牌中的单个属性
Posted
技术标签:
【中文标题】Keycloak 客户端映射器将领域名称显示为 JWT 令牌中的单个属性【英文标题】:Keycloak client mapper to show the relam name as individual attibute in JWT token 【发布时间】:2021-03-18 22:04:17 【问题描述】:默认情况下,keycloak(此处为版本 11)提供有关领域的信息,获取令牌,仅解析令牌有效负载的 iss 属性。例如
"exp": ...,
"iat": ...,
"jti": "...",
"iss": "http://localhost:8088/idp-provider-context/auth/realms/realmname",
"aud": [...
是否有一种内置方式(如客户端映射器)将有关领域名称的信息作为专用属性直接添加到 JWT 令牌?
一种解决方法是为每个用户添加一个属性“realmname”并将领域名设置为值。但一方面这似乎有点混乱,因为它是冗余信息。另一方面,这可以稍微加快应用程序的速度,因为没有此属性的令牌/用户或其中的错误值可能已经被视为无效而无需请求后端。这将识别未在为应用程序定义的所需进程中创建的用户。
【问题讨论】:
【参考方案1】:使用Client Mapper
代替用户属性。为此,请访问:
realm
;
转至clients
;
选择您要针对其请求令牌的client
;
转至Mappers
;
点击创建
在Mapper type
中选择Hardcoded claim
;
Token Claim Name
: 域名
Claim value
:领域的名称。
相应地填写其余部分。
客户端将是您用来进行身份验证的客户端。
【讨论】:
以上是关于Keycloak 客户端映射器将领域名称显示为 JWT 令牌中的单个属性的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak 使用自定义协议映射器从数据库/外部源添加额外声明