Keycloak PUT-request devuelve 401 (no autorizado)
Estoy usando cartero e intenté actualizar el perfil de un usuario a través de http: // localhost: 8180 / auth / admin / realms / demo / users / {userID} pero recibí una 401
respuesta.
El procedimiento que utilicé:
Token de administrador solicitado y recibido a través de http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Se agregó un token para solicitar encabezados de la manera adecuada, es decir, Autorización: Portador {access_token}
Solicitud de envío enviada con el tipo de contenido Json y la información del usuario como cuerpo a través de http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
Desafortunadamente, he recibido respuestas 401 consecutivas.
Primera solicitud:
-Cuerpo (x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-A http://localhost:8180/auth/realms/master/protocol/openid-connect/token
Segundo requisito:
-Encabezado -> Autorización: Portador ...
-Cuerpo (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-A http://localhost:8180/auth/admin/realms/demo/users/{userID}
Respuestas
En su primera llamada, el david
usuario debe tener privilegios de administrador . De lo contrario, se obtiene una respuesta de error autorizada para las acciones que el david
usuario no tiene los privilegios para realizar. Eche un vistazo a este hilo de SO para comprobar cómo asignar privilegios de administrador a un usuario.
Por ahora, solicitemos un token en nombre del usuario administrador maestro de la siguiente manera:

de la respuesta del cuerpo extraiga el access_token
.
Para la segunda llamada primero, copie y pegue el access_token
en Authorization > Type Bearer Token
:

En la segunda llamada, en lugar de
http://localhost:8180/auth/admin/realms/demo/users/{userID}
debe reemplazar el userID
parámetro con el actual userID
del usuario que está actualizando. Para obtenerlo userID
, puede llamar al siguiente punto final:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
o puede copiar y pegar desde la Consola de administración de Keycloak, en la pestaña de usuarios:

Entonces en Postman se vería así:
