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