Estou trabalhando em uma solicitação de troca de token do keycloak em que tento obter o token de acesso do cliente2 enquanto sou autenticado com o cliente1.
Habilitei token_exchange e admin_fine_grained_authz na instância keycloak.
Seguiu a documentação de https://www.keycloak.org/docs/latest/securing_apps/index.html#_internal-token-to-internal-token-exchange
Quando eu acessei a API para troca de tokens como
curl --location 'http://<URL>/realms/Genting/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=client2' \
--data-urlencode 'client_secret=<client2 secret>' \
--data-urlencode 'subject_token=<client1 token> \
--data-urlencode 'audience=client2' \
--data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
--data-urlencode 'requested_token_type=urn:ietf:params:oauth:token-type:access_token'
Em resposta, estou recebendo
{
"error": "access_denied",
"error_description": "Client is not within the token audience"
}
Há alguma configuração que perdi aqui para receber o token corretamente?
Você está trocando o token client1 por client2 , você precisa alterá-lo para