我正在管理控制台中测试Keycloak授权服务,但无法理解在下一个示例中keycloak为什么授权用户(在evaluate
标签中进行了测试)。这是我的设置:
test
democlient
创建了一个客户Authorization Enabled
Admin
adminuser
并将其分配给Admin
角色在Authorization
标签中,带有客户端democlient
:
Settings
-> Policy Enforcement Mode
中设置为Enforcing
list
和save
Resource A
Policies
标签中,创建一个名为 Only admins 的新Role policy
,其中(当然)我只允许管理员:
Permissions
标签中,创建了一个Scoped-based
权限,称为仅允许管理员资源A,列出范围:
就是这样。现在,我使用adminuser,角色Admin,资源A,作用域列表在evaluate
标签中检查此策略:
成功!世界上一切都很好!...除了否。 再次与adminuser,角色Admin,资源A,作用域保存(我未定义任何权限的作用域)一起检查策略Keycloak再次授权此规则:/
我假设根据密钥斗篷的文档,将policy enforcement mode
设置为Enforcing
将拒绝访问范围保存:
策略实施模式规定了评估授权请求时如何执行策略。 “强制”表示即使没有与给定资源相关联的策略,默认情况下也会拒绝请求。 “允许”表示即使没有与给定资源关联的策略,也允许请求。 “已禁用”会完全禁用策略评估,并允许访问任何资源。
所以...我在做什么错?我如何才能使该密钥斗篷拒绝访问save scope
? (显然,我可以在我明确拒绝此范围的地方进行许可。但是我希望默认值是拒绝,如文档所述)
任何想法都将不胜感激。
答案 0 :(得分:3)
我发现涉及此问题的Jira问题显然是一个错误:
https://issues.redhat.com/browse/KEYCLOAK-9483
Keycloak 9.0版随附一个补丁
https://issues.redhat.com/browse/KEYCLOAK-12438.
所以我们只需要等待这个版本