我们能否基于id以外的其他唯一字段更新Keycloak中的用户?

时间:2019-02-01 14:47:42

标签: java .net single-sign-on keycloak

我正在尝试更新Keycloak中的用户信息,我能够使用keycloak中提供的ID更新用户。

我尝试使用此端点,并且能够使用id更新

for ( ... ) <statement>

我是否可以通过任何方式使用电子邮件ID更新同一用户,因为这也是唯一字段?我尝试将{id}替换为用户的电子邮件ID,但这给了我一个错误。 有什么方法可以使用email-id或用户的任何其他唯一字段更新用户

2 个答案:

答案 0 :(得分:1)

这是不Keycloak可用功能实际上。您可以检查REST API的文档here。 你总是可以做到的解决办法让所有的用户,解析它寻找您想要的电子邮件,提取ID,并最终用它来更新它的数据。

  1. GET /admin/realms/{realm}/users/
  2. 您将收到一个包含所有用户的JSON对象,并使用Gson或其他JSON解析库进行解析。然后,如果您在名为User的类中对其进行了解析,请使用其#getId()方法。
  3. PUT /admin/realms/{realm}/users/{id}

您可以查看Keycloak的UserRepresentation,以了解您的User对象将需要哪些属性。

如果你不知道如何使用GSON阅读他们的文档或执行一个快速谷歌搜索。

<强> P.S :。GSON是大小写敏感所以你的属性应该具有比JSON对象提供的一个相同的名字

答案 1 :(得分:0)

您无法使用电子邮件ID更新用户,选项是为用户名设置电子邮件ID并使用以下API搜索。一旦找到用户,然后更新用户。

GET /admin/realms/{realm}/users 

还请注意,搜索操作不是完全匹配搜索,在chris@example.com上进行搜索将同时返回amy.chris@example.comchris@example.com