Я пытаюсь реализовать свою собственную форму для изменения пароля пользователя. Я попытался найти API для изменения пароля пользователя в Keycloak, но я не смог найти ничего в документации. Есть ли API для этого?
Есть ли вызов API для изменения пароля пользователя на keycloak?
Ответ 1
Вы можете использовать PUT/auth/admin/realms/{realm}/users/{id}/reset-password
- {id} - это идентификатор пользователя в keycloak (не логин)
Вот образец тела.
{ "type": "password", "temporary": false, "value": "my-new-password" }
Ответ 2
Вместо того, чтобы указывать новый пароль вручную, лучше использовать
PUT/auth/admin/realms/{realm}/users/{id}/execute-actions-email
вызов администратора с "UPDATE_PASSWORD"
в качестве необходимого действия. Это заставляет Keycloak отправлять пользователю электронное письмо с волшебной ссылкой для установки нового пароля.
Примечание: {id} - это идентификатор пользователя в keycloak (не логин)
Ответ 3
Нет, протоколы OAuth и OpenID Connect не определяют такую функцию, и Keycloak также не имеет возможности сделать это от имени пользователя. Существует API-интерфейс администратора сервера, который позволяет изменить пароль пользователя или сбросить его, но вы не можете вызвать его из графического интерфейса. Но Keycloak предоставляет своего рода "страницу моей учетной записи" по URL- http://localhost:8080/auth/realms/your-realm/account/
например http://localhost:8080/auth/realms/your-realm/account/
- замените часть URL-адреса your-realm
и просто перенаправьте пользователя на нее.
В документации это называется User Account Service
Также, если вы используете автообнаружение, вы можете получить URL-адрес, прочитав account-service
из JSON по адресу http://localhost:8080/auth/realms/your-realm