Keycloak PUT-request renvoie 401 (non autorisé)
J'utilise Postman et j'ai essayé de mettre à jour le profil d'un utilisateur via http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} mais j'ai reçu une 401
réponse.
La procédure que j'ai utilisée:
Jeton d'administration demandé et reçu via http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Ajout d'un jeton pour demander les en-têtes de la manière appropriée, à savoir Autorisation: Bearer {access_token}
Envoyé une requête Put avec le type de contenu Json et les informations de l'utilisateur comme corps via http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
Malheureusement, j'ai reçu 401 réponses consécutives.
Première demande:
-Body (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
Seconde demande:
-Header -> Autorisation: Porteur ...
-Corps (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-À http://localhost:8180/auth/admin/realms/demo/users/{userID}
Réponses
Lors de votre premier appel, l' david
utilisateur doit être un utilisateur avec des privilèges d'administrateur. Sinon, on obtient une réponse d'erreur autorisée pour les actions que l' david
utilisateur n'a pas les privilèges à effectuer. Jetez un œil à ce fil de discussion SO pour vérifier comment attribuer des privilèges d'administrateur à un utilisateur.
Pour l'instant, demandons un jeton au nom de l' utilisateur administrateur principal comme suit:
à partir de la réponse du corps, extraire le fichier access_token
.
Pour le deuxième appel en premier, copiez et collez le access_token
dans le Authorization > Type Bearer Token
:
Au deuxième appel, au lieu de
http://localhost:8180/auth/admin/realms/demo/users/{userID}
vous devez remplacer le userID
paramètre par le réel userID
de l'utilisateur que vous mettez à jour. Pour obtenir, userID
vous pouvez appeler le point de terminaison suivant:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
ou vous pouvez copier et coller à partir de la console d'administration Keycloak, sous l'onglet utilisateurs:
Donc, dans Postman ressemblerait à: