如何使用 REST API 在 Keycloak 中创建带密码的用户?

Dea*_*lze 4 rest keycloak keycloak-rest-api

我可以使用 REST API 创建一个新用户:

http://localhost:8080/auth/admin/realms/myRealm/users

但用户没有密码。在这篇文章这篇文章之后,我向 json 添加了凭据,如下所示

{
  "firstName":"functest",
  "lastName":"functest",
  "email":"me@gmail.com",
  "enabled":true,
  "username":"functest",
  "credentials":[{"type":"password","value":"abc123","temporary":false}]
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用用户名和密码登录时,它失败了。当我查看用户界面中的用户凭据时,它确实显示了一行“类型” password,但用户标签为空白。

如何使用 REST API 创建具有密码的用户?

dre*_*ash 8

更新:从Keycloak 17 Quarkus 发行版/auth开始,该路径已被删除。因此,您可能需要从以下端点调用中删除。/auth

那么您应该能够使用端点创建凭据:

POST http://localhost:8080/auth/admin/realms/myRealm/users
Run Code Online (Sandbox Code Playgroud)

与有效负载

{"enabled":true,"username":"functest","email":"me@gmail.com","firstName":"functest","lastName":"functest","credentials":[{"type":"password","value":"abc123","temporary":false}]}
Run Code Online (Sandbox Code Playgroud)

或者,您可以先创建用户,然后使用端点设置密码:

PUT http://localhost:8080/auth/admin/realms/myRealm/users/<USER_ID>
Run Code Online (Sandbox Code Playgroud)

与有效负载:

{"credentials":[{"type":"password","value":"abc123","temporary":false}]}
Run Code Online (Sandbox Code Playgroud)

ID您可以从以下位置获取它的用户:

GET http://localhost:8080/auth/admin/realms/myRealm/users/?username=<USERNAME>
Run Code Online (Sandbox Code Playgroud)