2

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

4

1 回答 1

2

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

您可以将 Mapper 与以下内容一起使用,而不是受众 Mapper Hardcoded claim

  • Token Claim Name调成aud
  • Claim value调成C
  • Add to access token调成ON

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

像这样:

在此处输入图像描述

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

为此,您需要访问:

  • 客户所在的领域
  • 转到客户并选择客户
  • 单击“客户端范围”选项卡
  • 删除范围emailprofile"Assigned Default Client Scopes"

像这样:

在此处输入图像描述

于 2022-02-07T22:59:41.723 回答