Keycloak PUT-запрос возвращает 401 (неавторизованный)
Я использую почтальон и пробовал обновить профиль пользователя через http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}, но получил 401
ответ.
Процедура, которую я использовал:
Запрошен и получен токен администратора через http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Добавлен токен в заголовки запроса соответствующим образом, например, авторизация: носитель {access_token}
Отправлен запрос Put с типом содержимого Json и информацией о пользователе в теле через http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
К сожалению, я получил 401 ответ.
Первый запрос:
-Тело (x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-К http://localhost:8180/auth/realms/master/protocol/openid-connect/token
Второй запрос:
-Заголовок -> Авторизация: предъявитель ...
-Тело (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-К http://localhost:8180/auth/admin/realms/demo/users/{userID}
Ответы
При первом вызове david
пользователь должен иметь права администратора . В противном случае вы получите авторизованный ответ об ошибке для действий, на выполнение которых у david
пользователя нет прав. Взгляните на эту ветку SO, чтобы узнать, как назначать пользователю права администратора .
А пока давайте запросим токен от имени главного администратора следующим образом:
из ответа тела извлеките access_token
.
Для второго вызова сначала скопируйте и вставьте access_token
в Authorization > Type Bearer Token
:
При втором звонке вместо
http://localhost:8180/auth/admin/realms/demo/users/{userID}
вам необходимо заменить userID
параметр фактическим userID
пользователем, которого вы обновляете. Чтобы получить, userID
вы можете вызвать следующую конечную точку:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
или вы можете скопировать и вставить из консоли администратора Keycloak на вкладке Пользователи:
Так в Postman будет выглядеть так: