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 401risposta.
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' davidutente deve essere uno con privilegi di amministratore . Altrimenti, si ottiene una risposta di errore autorizzata per le azioni che l' davidutente 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_tokenil Authorization > Type Bearer Token:
Alla seconda chiamata, invece di
http://localhost:8180/auth/admin/realms/demo/users/{userID}
è necessario sostituire il userIDparametro con l'effettivo userIDdell'utente che si sta aggiornando. Per ottenerlo userIDpuoi 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: