我想在注册后将信息(如外部 ID)存储在自定义用户属性中。最终目标是在 JWT 令牌中包含这些信息。
我很难找到正确的方法来做到这一点。我认为这可能不是一个好的设计。
有关我的用例的更多详细信息:当用户在 keycloak 上注册时,我必须在外部应用程序上创建用户,并且我想将此外部 ID 保存在 keycloaK 上。
我在想事件监听器 SPI 并在注册后做一些事情,但感觉有点矫枉过正
我想在注册后将信息(如外部 ID)存储在自定义用户属性中。最终目标是在 JWT 令牌中包含这些信息。
我很难找到正确的方法来做到这一点。我认为这可能不是一个好的设计。
有关我的用例的更多详细信息:当用户在 keycloak 上注册时,我必须在外部应用程序上创建用户,并且我想将此外部 ID 保存在 keycloaK 上。
我在想事件监听器 SPI 并在注册后做一些事情,但感觉有点矫枉过正
用户注册后,您可以使用端点将外部 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 中转到:
您可以将标签 ExternalID 替换为您将使用的标签。
这足以让外部 ID 进入 JWT 令牌