首页 > 解决方案 > Keycloak 将值声明值设置为“硬编码声明”

问题描述

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

标签: spring-bootkeycloakkeycloak-rest-api

解决方案


为此,您可以使用端点更新映射器

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

您可以ID使用此端点同时获取客户端和映射器:

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

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


推荐阅读