jwt - 未实现 Keycloak 模拟 API
问题描述
我一直在尝试使用 Keycloak Impersonation API(最近添加的)来获取另一个用户的访问令牌。我根据文档和另一个StackOverflow 问题创建了一个半成功的 CURL 请求。CURL 请求(如下)返回 a 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
文件以启用此功能?
解决方案
默认情况下启用模拟,Token Exchange
不是。
启用使用-Dkeycloak.profile=preview
或-Dkeycloak.profile.feature.token_exchange=enabled
如文档中所述启动服务器
https://www.keycloak.org/docs/latest/securing_apps/index.html#_token-exchange
推荐阅读
- cqrs - 维护聚合之间的引用
- c++ - 为什么在向着色器存储缓冲区发送结构时会收到垃圾数据?
- javascript - 如何在我的 JavaScript 草图中重放录制的音频?
- android - Flutter - 如何裁剪 webview 的高度?
- ruby-on-rails - 将 <%= search_url 中的 { 或 } 符号添加到头部
- c# - try-catch 是否影响线程、COM 对象和返回的属性数据
- reactjs - 打字稿错误类型无法分配给状态 - usestate
- macros - 如何解决此宏的实习问题?
- swift - 是否存在“for _ in [1,2,3]”根本不会循环的*任何*情况?
- android - 从片段重新创建活动得到崩溃