Keycloak PUT-Anfrage gibt 401 zurück (nicht autorisiert)

Jan 21 2021

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 401Antwort 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

1 dreamcrash Jan 22 2021 at 03:58

Bei Ihrem ersten Anruf muss der davidBenutzer über Administratorrechte verfügen . Andernfalls erhält man eine autorisierte Fehlerantwort für die Aktionen, für deren davidAusfü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_tokenin Authorization > Type Bearer Token:

Beim zweiten Anruf statt

http://localhost:8180/auth/admin/realms/demo/users/{userID} 

Sie müssen den userIDParameter durch den tatsächlichen userIDdes 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: