Keycloak PUT-request devuelve 401 (no autorizado)

Jan 21 2021

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 401respuesta.

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

1 dreamcrash Jan 22 2021 at 03:58

En su primera llamada, el davidusuario debe tener privilegios de administrador . De lo contrario, se obtiene una respuesta de error autorizada para las acciones que el davidusuario 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_tokenen Authorization > Type Bearer Token:

En la segunda llamada, en lugar de

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

debe reemplazar el userIDparámetro con el actual userIDdel 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í: