我们要以编程方式创建Keycloak用户,然后检查Keycloak中是否已经存在用户名和/或电子邮件地址。我们正在使用4.4.0.FINAL
版。
当我们使用Keycloak管理员客户端以编程方式创建用户时,如果用户名或电子邮件地址已在使用中,则会收到错误代码409(冲突)。但是,我们在响应(readEntity
中仅收到一条错误消息,即用户名已经存在。该错误消息并未说明该电子邮件地址也已被使用。
检查Keycloak中用户名和/或电子邮件地址是否已存在的最佳方法是什么?
目标是确切知道用户名或电子邮件地址是否已经存在。而且,这不仅可以结合使用,而且还可以结合到用户A已经使用了请求的用户名,而用户B已经使用了请求的邮件地址。
答案 0 :(得分:0)
检查Admin API是否存在用户名和/或电子邮件:
GET /{realm}/users?username=toto&email=blabla@example.com
然后检查结果是否为空。 username
和email
查询参数都是可选的。
更多信息: https://www.keycloak.org/docs-api/4.4/rest-api/index.html#_users_resource (请查找获取用户部分。)
管理CLI kcadm.sh
中应该有一个相应的命令。
答案 1 :(得分:0)
2020年,将有一个新的API(至少有一个新的PR于2020年6月合并):https://github.com/keycloak/keycloak/pull/6926
现在我们可以使用以下API:
List<UserRepresentation> search(@QueryParam("username") String username, @QueryParam("exact") Boolean exact);