【发布时间】:2019-08-14 14:25:11
【问题描述】:
我一直在尝试使用 Keycloak Impersonation API(最近添加的)来获取另一个用户的访问令牌。我基于docs 和另一个StackOverflow question 创建了一个半成功的CURL 请求。 CURL 请求(下面)返回一个501 Not Implemented,我正在尝试解决这个问题。如果这是另一个错误,我会假设我做错了什么,但这似乎至少部分正确。
curl --verbose -X POST "http://localhost:8081/auth/realms/master/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "client_id=admin-cli" \
-d "requested_subject={TARGET_USER_ID}" \
-d "subject_token={USER_MANAGER_TOKEN}"
到目前为止,我的工作流程是获取 Keycloak 主领域“管理员”用户的访问令牌(成功)并在模拟请求中使用它以及目标用户的 Keycloak ID。我是做错了什么还是漏了一步?
我没有更改任何 Keycloak 权限,这是必需的吗?
根据我的理解和文档,Keycloak v5 - Sever Installation 目前支持并默认启用模拟。但是,另一篇文章(Keycloak v5 - Token Exchange)似乎表明该功能默认禁用;这就是我收到501 Not Implemented 的原因吗?
编辑: @qdivision 提到需要启用令牌交换才能使其工作。但是,我们使用的是 jboss/keycloak Docker 映像,我想知道应该在哪里添加 profile.properties 文件以启用此功能?
【问题讨论】:
标签: jwt keycloak impersonation