Keycloak 将值 Claim 值设置为 "hardcoded claim"

Keycloak set value Claim value to "hardcoded claim"

我创建了映射器类型为“硬编码声明”的自定义协议映射器。 我可以使用 keycloak API 设置“索赔价值”字段吗? 我学习了 API 规范,但没有找到任何东西。 有工作的例子吗? 我正在使用 Springboot restAPI 和 Keycloak.

为此,您可以使用端点 Update the mapper :

PUT /{realm}/clients/<ID_OF_CLIENT>/protocol-mappers/models/<ROLE_MAPPER_ID>

例如

curl -X PUT http://$KEYCLOAK_IP/auth/admin/realms/<REALM_NAME>/clients/<ID_OF_CLIENT>/protocol-mappers/models/<MAPPER_ID>

负载是您的 Mapper 的新更新配置,例如:

{"id":"<MAPPER_ID>","name":"Hardcore","protocol":"openid-connect","protocolMapper":"oidc-hardcoded-claim-mapper","consentRequired":false,"config":{"claim.value":"<NEW_HARDCODE_VALUE>","userinfo.token.claim":"true","id.token.claim":"true","access.token.claim":"true","claim.name":"Name","jsonType.label":"String"}}

您可以通过管理控制台获取客户端的 ID,方法是:

  • 你的 Realm;
  • 客户;
  • 你的客户;
  • 从 url 复制 ID(例如, .../clients/10000d0a-aa00-00aa-00a0-aa0000000000).

映射器 ID 您可以通过管理控制台获取它,方法是:

  • 你的 Realm;
  • 客户;
  • 你的客户;
  • 映射器;
  • 点击您的映射器;
  • ID 将位于 url(例如, ../mappers/10000d0a-aa00-00aa-00a0-aa0000000000)

您可以使用此端点同时获取 Client 和 Mapper 的 ID

http://$KEYCLOAK_IP/auth/admin/realms/<REALM_NAME>/clients?clientId=<CLIENT_ID>

JSON 响应中提取您将获得客户端和映射器 ID。