1

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

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

有关我的用例的更多详细信息:当用户在 keycloak 上注册时,我必须在外部应用程序上创建用户,并且我想将此外部 ID 保存在 keycloaK 上。

我在想事件监听器 SPI 并在注册后做一些事情,但感觉有点矫枉过正

4

1 回答 1

3

用户注册后,您可以使用端点将外部 ID 添加为用户自定义属性:

PUT <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/<USER_ID>

与有效载荷{"id":"<USER_ID>","attributes":{"ExternalID":["<THE_EXTERNAL_ID>"]}}

您可以从中获取的用户 ID:

GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>

我在我的 repo中为此创建了脚本。这些脚本还确保将新属性添加到旧属性中,而不是替换它们。

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

在 Keycloak 中转到:

  • 你的领域
  • 客户端 > 您将用于验证您的应用程序的客户端,
  • 映射器
  • 创造
  • 选择映射器类型:用户属性
  • 用户属性:外部ID
  • 把剩下的填满。

您可以将标签 ExternalID 替换为您将使用的标签。

这足以让外部 ID 进入 JWT 令牌

于 2020-12-02T18:12:36.753 回答