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

Sat*_*ian 4 access-token jwt openid-connect keycloak pyjwt

我正在为身份验证服务生成 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 中尝试了不同的东西,但我无法让它以某种方式工作。

dre*_*ash 6

我为 U 生成了 JWTtoken,当我检查有效负载时,我看到“aud”:[“C”,“account”]。这太棒了,我希望 C 能够在场。但我不希望“account”出现在“aud”中。

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

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

"aud": "account"该映射器将覆盖原始声明"aud": "C"

就像这样:

(旧的 Keycloak 用户界面)

在此输入图像描述

(对于新的 Keycloak UI)

  • 转到选项卡Client Scopes
  • 单击范围-专用(例如,在我的示例中为测试专用)

在此输入图像描述

  • 点击Configure a new mapper

在此输入图像描述

  • 选择Hardcoded claim,然后填写
  • 点击Save

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

如何在 keycloak 中配置它?同样,范围读取 -“范围”:“电子邮件配置文件 test-client-rhs”,我希望从中删除“电子邮件配置文件”。

为此,您需要访问:

  • 客户所在领域
  • 前往客户并选择客户
  • 单击“客户端范围”选项卡

(对于旧的 Keycloak UI)

  • 删除范围emailprofile从中"Assigned Default Client Scopes"

像这样:

在此输入图像描述

(对于新的 Keycloak UI)

  • 更改范围emailprofileDefaultOptional,如下所示:

在此输入图像描述