Żądanie PUT Keycloak zwraca 401 (nieautoryzowane)
Używam programu Postman i próbowałem zaktualizować profil użytkownika przez http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}, ale otrzymałem 401
odpowiedź.
Procedura, którą zastosowałem:
Żądany i odebrany token administratora przez http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Dodano token do żądania nagłówków w odpowiedni sposób, np. Authorization: Bearer {access_token}
Wysłano żądanie Put z typem zawartości Json i informacjami o użytkowniku jako treści za pośrednictwem adresu http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
Niestety, otrzymałem odpowiedzi 401 równolegle.
Pierwsza prośba:
-Body (x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-Do http://localhost:8180/auth/realms/master/protocol/openid-connect/token
Drugie żądanie:
-Header -> Authorization: Bearer ...
-Body (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-Do http://localhost:8180/auth/admin/realms/demo/users/{userID}
Odpowiedzi
W pierwszym połączeniu david
użytkownik musi mieć takie same uprawnienia administratora . W przeciwnym razie uzyskuje się autoryzowaną odpowiedź na błąd dla działań, do których wykonania david
użytkownik nie ma uprawnień. Spójrz na ten wątek SO, aby sprawdzić, jak przypisać użytkownikowi uprawnienia podobne do administratora .
Na razie poprośmy o token w imieniu głównego administratora w następujący sposób:
z odpowiedzi ciała wyodrębnij plik access_token
.
W przypadku drugiego połączenia najpierw skopiuj i wklej access_token
do Authorization > Type Bearer Token
:
Podczas drugiego połączenia zamiast
http://localhost:8180/auth/admin/realms/demo/users/{userID}
musisz zamienić userID
parametr na rzeczywisty userID
użytkownika, którego aktualizujesz. Aby uzyskać userID
, możesz wywołać następujący punkt końcowy:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
lub możesz skopiować i wkleić z Keycloak Admin Console, w zakładce użytkownicy:
Więc w Postmanie wyglądałoby to tak: