Keycloak 客户端映射器将域名显示为 JWT 令牌中的单个属性
Keycloak client mapper to show the relam name as individual attibute in JWT token
默认情况下,keycloak(此处为版本 11)提供有关领域的信息,为其获取令牌,仅解析令牌有效负载的 iss 属性。例如
{
"exp": ...,
"iat": ...,
"jti": "...",
"iss": "http://localhost:8088/idp-provider-context/auth/realms/realmname",
"aud": [...
是否有内置方式,如客户端映射器,将有关领域名称的信息作为专用属性直接添加到 JWT 令牌?
一种解决方法是为每个用户添加属性“realmname”,并将 realmname 设置为值。但一方面,这似乎有点混乱,因为它是冗余信息。另一方面,这可能会稍微加快应用程序的速度,因为 tokens/users 没有此属性或其中的错误值可能已经被视为无效而无需请求后端。这将识别未在为应用程序定义的所需过程中创建的用户。
使用 Client Mapper
而不是用户属性。为此,请访问:
- Select 你的
realm
;
- 转到
clients
;
- Select 您要针对其请求令牌的
client
;
- 转到
Mappers
;
- 点击创建
- 在
Mapper type
selectHardcoded claim
;
Token Claim Name
: 域名
Claim value
: 领域名称。
- 相应地填写其余部分。
客户端将是您用来进行身份验证的客户端。
默认情况下,keycloak(此处为版本 11)提供有关领域的信息,为其获取令牌,仅解析令牌有效负载的 iss 属性。例如
{
"exp": ...,
"iat": ...,
"jti": "...",
"iss": "http://localhost:8088/idp-provider-context/auth/realms/realmname",
"aud": [...
是否有内置方式,如客户端映射器,将有关领域名称的信息作为专用属性直接添加到 JWT 令牌?
一种解决方法是为每个用户添加属性“realmname”,并将 realmname 设置为值。但一方面,这似乎有点混乱,因为它是冗余信息。另一方面,这可能会稍微加快应用程序的速度,因为 tokens/users 没有此属性或其中的错误值可能已经被视为无效而无需请求后端。这将识别未在为应用程序定义的所需过程中创建的用户。
使用 Client Mapper
而不是用户属性。为此,请访问:
- Select 你的
realm
; - 转到
clients
; - Select 您要针对其请求令牌的
client
; - 转到
Mappers
; - 点击创建
- 在
Mapper type
selectHardcoded claim
; Token Claim Name
: 域名Claim value
: 领域名称。- 相应地填写其余部分。
客户端将是您用来进行身份验证的客户端。