未实现密钥掩蔽模拟API [英] Keycloak impersonation API not implemented

查看:21
本文介绍了未实现密钥掩蔽模拟API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试使用Keyloak模拟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}"

到目前为止,我的工作流程是获取密钥罩主域"admin"用户的访问令牌(成功),并在模拟请求中使用该令牌以及目标用户的密钥罩ID。我是否做错了什么或错过了某个步骤?

我没有更改任何密钥罩权限,这是必需的吗?

根据我的理解和文档,Keycloak v5 - Sever Installation目前支持并默认启用模拟。然而,另一篇文章(Keycloak v5 - Token Exchange)似乎表明该功能在默认情况下是禁用的;这会是我收到501 Not Implemented的原因吗?

edit:@qdition提到需要启用令牌交换才能正常工作。但是,我们使用的是jboss/keycloakDocker映像,我想知道应该在哪里添加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

这篇关于未实现密钥掩蔽模拟API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆