Warm tip: This article is reproduced from serverfault.com, please click

其他-注册后如何在keycloak用户模型中存储外部数据

(其他 - How to store external data in keycloak user model after registration)

发布于 2020-12-02 17:41:06

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

我在寻找正确的方法时遇到了麻烦。我认为这可能不是一个好的设计。

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

我当时在考虑事件监听器SPI,并在注册后做一些事情,但是感觉有点过头了

Questioner
Guillaume Alouege
Viewed
0
dreamcrash 2020-12-31 15:14:30

用户注册后,你可以使用端点将外部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>

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

在Keycloak中,转到:

  • 你的境界
  • 客户>你将用来对你的应用进行身份验证的客户,
  • 映射器
  • 创造
  • 选择映射器类型:用户属性
  • 用户属性:ExternalID
  • 填满其余的。

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

这足以使外部ID进入JWT令牌中