如何从 Keycloak 为 OIDC 流程修改 JWT 中的现有声明?

How to modify existing claims in JWT from Keycloak for OIDC flow?

我正在为身份验证服务生成 JWT,我们使用 Keycloak 作为 OAuth 服务器。

我已经设置了一个领域 R、一个客户端 C 和一个用户 U。我设置了一个协议映射器以在“aud”中包含“C”。我为 U 生成了 JWTtoken,当我检查负载时,我看到 "aud": ["C", "account"]。太好了,我希望 C 在场。但我不希望 "account" 出现在 "aud".

如何在 keycloak 中配置它?同样,作用域为 - "scope": "email profile test-client-rhs",我希望从中删除 "email profile"。我一直在谷歌上搜索很多东西,并在 Keycloak 中尝试了不同的东西,但我无法让它以某种方式工作。

I generated the JWTtoken for U and when I check the payload, I see "aud": ["C", "account"]. Which is great, I wanted C to be present. But I do not want "account" to be present in the "aud".

您可以使用 Hardcoded claim 映射器来代替受众映射器:

  • Token Claim Name 设置为 aud
  • Claim value 设置为 C
  • Add to access token 设置为 ON

此映射器将用 "aud": "C"

覆盖原始声明 "aud": "account"

像这样:

How do I configure this in keycloak? Similarly, the scope reads - "scope": "email profile test-client-rhs" and I wish to remove "email profile" from it.

为此,您需要前往:

  • 客户端所在的领域
  • 去找客户select客户
  • 单击“客户端范围”选项卡
  • "Assigned Default Client Scopes"
  • 中删除范围 emailprofile

像这样: