dra*_*gon 4 keycloak token-exchange
我尝试从文档中实现Keycloak直接裸模拟,但最终得到了错误:
"error": "access_denied",
"error_description": "Client not allowed to exchange"
Run Code Online (Sandbox Code Playgroud)
这是 Postman 设置,其中包含admin-cli、 clientId 和用户justin,我想获取其令牌,该令牌存在于“用户”部分中。
我在 Postman 中使用的 admin-cli 密钥:
我遵循了Keycloak Direct Naked Impersonation 文档中的所有步骤。
这是 Keycloak 推荐的请求设置,可以让这种直接的裸体模拟发挥作用。您在我上面的邮递员设置中看到了这一点。
curl -X POST \
-d "client_id=starting-client" \
-d "client_secret=the client secret" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "requested_subject=wburke" \
http://localhost:8080/realms/myrealm/protocol/openid-connect/token
Run Code Online (Sandbox Code Playgroud)
在 Docker 内部,我设置了 token_exchange=enabled 和 admin_fine_grained_authz=enabled
- name: "KEYCLOAK_EXTRA_ARGS"
value: "-Dkeycloak.profile.feature.admin=enabled -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled -Dkeycloak.profile.feature.token_exchange=enabled"
Run Code Online (Sandbox Code Playgroud)
我日复一日地搜索有关这个主题的内容,并测试了目前互联网上有关该主题的所有可用选项,但没有成功。
如果这对您有用,请分享您的解决方法。或者至少请给出一些想法,也许我错过了一些东西。
为user-impersonate创建新策略,我在其中添加了用户 Justin
然后在权限中我添加了这个策略
问题是文档包含错误的图像,即:
它应该是Client Policy与客户端admin-cli而不是用户一起admin。
例如:
因此,您需要 2 个策略/权限:
impersonate(即决定管理员是否可以模拟其他用户的策略),您在其中创建Client Policy并传递客户端“admin-cli”(在您的情况下);user-impersonated(即决定哪些用户可以被模拟的策略。这些策略适用于被模拟的用户),您在其中创建User Policy并传递用户“justin”(在您的情况下)。一步一步:KC 20.0.3 新 UI
(旁注,至少在生产环境中,您应该使用其他领域和客户端,而不是 master 和 admin-cli)
启用以下秘密admin-cli:
admin-cliClient authenticationON创建两个策略:1 个客户端策略和 1 个用户策略
master-realmAuthorization卡Policies选项卡Create policy,然后Clientadmin-cli到该Client字段并单击Save再次重复上述步骤,但这次User Policy为将被模拟的用户创建一个(即,在您的情况下为 justin)
将策略添加到相应的范围/权限:
UsersPermissionsPermissions enabledONimpersonateadmin-cli(例如名为 的策略Client-impersonator)SaveUsersPermissionsuser-impersonated执行请求:
curl -X POST \
-d "client_id=admin-cli" \
-d "client_secret=8AEx99Ob4Hc8oricSGnii6x4Rs57g4ny" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "requested_subject=justin" \
http://0.0.0.0:8080/realms/master/protocol/openid-connect/token
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4683 次 |
| 最近记录: |