La richiesta PUT di Keycloak restituisce 401 (non autorizzato)
Sto usando Postman e ho provato ad aggiornare il profilo di un utente tramite http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} ma ho ricevuto una 401
risposta.
La procedura che ho usato:
Token di amministrazione richiesto e ricevuto tramite http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Token aggiunto per richiedere le intestazioni nel modo appropriato, ad es.
Invia richiesta Put con il tipo di contenuto Json e le informazioni dell'utente come corpo tramite http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
Sfortunatamente, ho ricevuto 401 risposte consecutive.
Prima richiesta:
-Body (x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-Per http://localhost:8180/auth/realms/master/protocol/openid-connect/token
Seconda richiesta:
-Intestazione -> Autorizzazione: Portatore ...
-Corpo (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-Per http://localhost:8180/auth/admin/realms/demo/users/{userID}
Risposte
Nella tua prima chiamata, l' david
utente deve essere uno con privilegi di amministratore . Altrimenti, si ottiene una risposta di errore autorizzata per le azioni che l' david
utente non ha i privilegi per eseguire. Dai un'occhiata a questo thread SO per verificare come assegnare privilegi di amministratore a un utente.
Per ora richiediamo un token per conto dell'utente amministratore principale come segue:
dalla risposta del corpo estrarre il file access_token
.
Per la seconda chiamata prima, copia e incolla access_token
il Authorization > Type Bearer Token
:
Alla seconda chiamata, invece di
http://localhost:8180/auth/admin/realms/demo/users/{userID}
è necessario sostituire il userID
parametro con l'effettivo userID
dell'utente che si sta aggiornando. Per ottenerlo userID
puoi chiamare il seguente endpoint:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
oppure puoi copiare e incollare dalla Keycloak Admin Console, nella scheda utenti:
Quindi in Postman apparirebbe come: