Keycloak 如何在注册后将外部数据存储在KeyClope用户模型中

Keycloak 如何在注册后将外部数据存储在KeyClope用户模型中,keycloak,keycloak-rest-api,Keycloak,Keycloak Rest Api,我想在注册后将信息(如外部ID)存储在自定义用户属性中。 最终目标是在JWT令牌中包含此信息 我很难找到正确的方法。我认为这可能不是一个好的设计 有关我的用例的更多详细信息: 当一个用户在keydove上注册时,我必须在一个外部应用程序上创建该用户,并且我想在keydove上保存这个外部ID 我在考虑使用事件侦听器SPI,并在注册后执行一些操作,但在用户注册后,您可以使用端点将外部ID添加为用户自定义属性,这感觉有些过分: PUT <YOUR_KEYCLOAK_DOMAIN>/aut

我想在注册后将信息(如外部ID)存储在自定义用户属性中。 最终目标是在JWT令牌中包含此信息

我很难找到正确的方法。我认为这可能不是一个好的设计

有关我的用例的更多详细信息: 当一个用户在keydove上注册时,我必须在一个外部应用程序上创建该用户,并且我想在keydove上保存这个外部ID


我在考虑使用事件侦听器SPI,并在注册后执行一些操作,但在用户注册后,您可以使用端点将外部ID添加为用户自定义属性,这感觉有些过分:

PUT <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/<USER_ID>
PUT/auth/admin/realms//users/
使用有效负载
{“id”:“,“attributes”:{“ExternalID”:[“”]}

您可以从以下位置获取的用户ID:

GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
GET/auth/admin/realms//users/?username=
我已经在中创建了用于此的脚本。脚本还确保将新属性添加到旧属性中,而不是替换它们

对于这两个端点,您需要在头中发送来自用户管理员的令牌

在钥匙斗篷中,转到:

  • 你的领域
  • 客户端>将用于验证应用程序的客户端
  • 制图员
  • 创造
  • 选择映射器类型:用户属性
  • 用户属性:ExternalID
  • 把剩下的填满
标签外部化,您可以用您将要使用的内容替换它

这足以将外部ID放入JWT令牌中