当某些 admin客户端由某些 admin客户端能够创建用户并获取供其他客户端使用的访问令牌时,我正在尝试启用流。 / p>
我具有启用和配置了令牌交换和细粒度身份验证的KeyCloak设置。我可以通过REST API登录我的管理员用户,然后交换令牌。但是当我指定观众时,我会出错。
此令牌返回令牌,但我需要另一位客户/受众群体的令牌。
http -f POST https://my-keycloak-server.com/auth/admin/realms/my-realm/protocol/openid-connect/token grant_type=urn:ietf:params:oauth:grant-type:token-exchange requested_subject=1a147915-53fe-454d-906a-186fecfa6974 client_id=api-admin client_secret=23a4ecbe-a9e8-448c-b36a-a45fa1082e6e subject_token=eyJhbGeiOiJSUzI1NiIs......
这是失败的错误。
http -f POST https://my-keycloak-server.com/auth/admin/realms/my-realm/protocol/openid-connect/token grant_type=urn:ietf:params:oauth:grant-type:token-exchange requested_subject=1a147915-53fe-454d-906a-186fecfa6974 client_id=api-admin client_secret=23a4ecbe-a9e8-448c-b36a-a45fa1082e6e subject_token=eyJhbGeiOiJSUzI1NiIs...... audience=my-another-client
{
"error": "access_denied",
"error_description": "Client not allowed to exchange"
}
所以我尝试为目标受众客户端设置细粒度身份验证(在标签中启用了它,然后尝试为我的管理员用户添加策略以能够交换令牌),但是当我想添加允许我的管理员用户执行令牌交换的政策,但由于UI错误,我陷入了困境。
当输入策略名称时,Keycloak正在寻找名称大肠菌时,我得到404。在这种情况下,Afaik 404不应阻止表单发布,因为这不会造成名称冲突。相反,我立即因错误而被重定向。
https://my-keycloak-server.com/auth/admin/realms/my-realm/clients/1bafa9a4-f7e2-422c-9188-58ea95db32ef/authz/resource-server/policy/search?name=some-name
最后,我无法在Keycloak中添加任何策略。表单验证一直都以找不到404策略名称引起的崩溃而告终。
我正在使用dockerized keycloak 10.0.0
有什么想法吗?
答案 0 :(得分:1)
我是通过实时编辑Angular JS UI脚本功能(在第2403行中执行验证)来破解的。
this.checkNameAvailability = function (onSuccess) {
if (!$scope.policy.name || $scope.policy.name.trim().length == 0) {
return;
}
ResourceServerPolicy.search({
realm: $route.current.params.realm,
client: client.id,
name: $scope.policy.name
}, function(data) {
if (data && data.id && data.id != $scope.policy.id) {
Notifications.error("Name already in use by another policy or permission, please choose another one.");
} else {
onSuccess();
}
});
}
到
this.checkNameAvailability = function (onSuccess) {
onSuccess();
}
最后成功添加了策略。仍然看起来像是UI错误。