我正在处理 keycloak 的令牌交换请求,其中尝试在与客户端 1 进行身份验证时获取客户端 2 的访问令牌。
已在 keycloak 实例上启用 token_exchange 和 admin_fine_grained_authz。
遵循https://www.keycloak.org/docs/latest/securing_apps/index.html#_internal-token-to-internal-token-exchange中的文档
当我点击 API 进行代币交换时
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'
作为回应,我得到了
{
"error": "access_denied",
"error_description": "Client is not within the token audience"
}
我是否遗漏了一些设置以致无法正确接收令牌?
您正在用客户端 1 令牌交换客户端 2 令牌,您需要将其更改为