Keycloak PUT-Anfrage gibt 401 zurück (nicht autorisiert)
Ich verwende Postman und habe versucht, das Profil eines Benutzers über http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} zu aktualisieren, aber ich habe eine 401
Antwort erhalten.
Das Verfahren, das ich verwendet habe:
Angefordertes und empfangenes Admin-Token über http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Token hinzugefügt, um Header auf die entsprechende Weise anzufordern, z. B. Autorisierung: Inhaber {access_token}
Gesendete Put-Anfrage mit Json-Inhaltstyp und Benutzerinformationen als Text über http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
Leider habe ich hintereinander 401 Antworten erhalten.
Erste Anfrage:
-Körper (x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-Zu http://localhost:8180/auth/realms/master/protocol/openid-connect/token
Zweite Anfrage:
-Header -> Autorisierung: Inhaber ...
-Körper (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-Zu http://localhost:8180/auth/admin/realms/demo/users/{userID}
Antworten
Bei Ihrem ersten Anruf muss der david
Benutzer über Administratorrechte verfügen . Andernfalls erhält man eine autorisierte Fehlerantwort für die Aktionen, für deren david
Ausführung der Benutzer nicht berechtigt ist. Schauen Sie sich diesen SO-Thread an, um zu überprüfen, wie einem Benutzer Administratorrechte zugewiesen werden .
Denn jetzt lassen Sie uns im Namen der ein Token anfordern Master Admin - Benutzer wie folgt:
Aus der Körperreaktion extrahieren Sie die access_token
.
Kopieren Sie für den zweiten Aufruf zuerst das und fügen Sie es ein access_token
in Authorization > Type Bearer Token
:
Beim zweiten Anruf statt
http://localhost:8180/auth/admin/realms/demo/users/{userID}
Sie müssen den userID
Parameter durch den tatsächlichen userID
des Benutzers ersetzen, den Sie aktualisieren. Um dies zu erreichen userID
, können Sie den folgenden Endpunkt aufrufen:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
oder Sie können von der Keycloak Admin Console unter der Registerkarte Benutzer kopieren und einfügen:
Also in Postman würde aussehen wie: