A solicitação PUT do Keycloak retorna 401 (não autorizado)
Estou usando o carteiro e tentei atualizar o perfil de um usuário via http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}, mas recebi uma 401
resposta.
O procedimento que usei:
Solicitou e recebeu o token de administrador via http: // localhost: 8180 / auth / realms / master / protocol / openid-connect / token
Adicionado token para solicitar cabeçalhos da maneira apropriada, ou seja, Autorização: Bearer {access_token}
Solicitação Put enviada com o tipo de conteúdo Json e as informações do usuário como corpo via http: // localhost: 8180 / auth / admin / realms / demo / users / {userID}.
Infelizmente, recebi 401 respostas consecutivas.
Primeiro pedido:
-Body (x-www-form-urlencoded)
client_id : admin_cli
username: ...
password: ...
grant_type: password
client_secret: ...
-Para http://localhost:8180/auth/realms/master/protocol/openid-connect/token
Segundo pedido:
-Header -> Autorização: Portador ...
-Corpo (JSON)
"email": "[email protected]",
"firstName": "divad",
"lastName": "d"
-Para http://localhost:8180/auth/admin/realms/demo/users/{userID}
Respostas
Em sua primeira chamada, o david
usuário deve ter privilégios semelhantes aos de administrador . Caso contrário, obtém-se uma resposta de erro autorizada para as ações que o david
usuário não tem privilégios para executar. Dê uma olhada neste tópico do SO para verificar como atribuir privilégios semelhantes aos de administrador a um usuário.
Por enquanto, vamos solicitar um token em nome do usuário administrador mestre da seguinte maneira:
da resposta do corpo extrair o access_token
.
Para a segunda chamada primeiro, copie e cole o access_token
em Authorization > Type Bearer Token
:
Na segunda chamada, em vez de
http://localhost:8180/auth/admin/realms/demo/users/{userID}
você precisa substituir o userID
parâmetro com o real userID
do usuário que você está atualizando. Para obter, userID
você pode ligar para o seguinte endpoint:
GET <YOUR_KEYCLOAK_DOMAIN>/auth/admin/realms/<YOUR_REALM>/users/?username=<THE_USERNAME>
ou você pode copiar e colar do Admin Console do Keycloak, na guia usuários:
Portanto, no Postman seria semelhante a: