Keycloak PUT-запрос возвращает 401 (неавторизованный)

Jan 21 2021

Я использую почтальон и пробовал обновить профиль пользователя через 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}

Ответы

1 dreamcrash Jan 22 2021 at 03:58

При первом вызове 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 будет выглядеть так: