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 typeselectHardcoded claim;
  • Token Claim Name : 域名
  • Claim value : 领域名称。
  • 相应地填写其余部分。

客户端将是您用来进行身份验证的客户端。