温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Keycloak authorization services don't deny scopes in resource
keycloak

其他 - Keycloak授权服务不会拒绝资源范围

发布于 2020-04-18 22:05:27

我正在管理控制台中测试Keycloak授权服务,但无法理解为什么在下一个示例中keycloak向用户授权(在evaluate选项卡中进行了测试)。这是我的设置:

  • 创建一个领域 test
  • 创建一个客户端democlientAuthorization Enabled
  • 创建领域角色 Admin
  • 创建用户adminuser并将其分配给Admin角色

Authorization带有客户端选项卡中democlient

  • Settings-> Policy Enforcement Mode设置为Enforcing
  • 创建2个范围:listsave
  • Resource A使用之前的两个范围创建资源
  • Policies标签中,创建一个Role policy名为Only admins的新名称,其中(当然)我只允许admins: 制定角色政策
  • Permissions标签中,创建了一个Scoped-based名为allow only admins Resource A权限,列表Scope创建权限,仅管理员可以访问资源A和范围列表

就是这样。现在,我evaluate使用adminuser,角色Admin,资源A,作用域列表此策略签入此策略:

Keycloak授权规则

成功!一切都在世界好!......除了没有再次使用adminuser,角色Admin,Resource A,Scope save(我未定义任何权限的范围)检查策略Keycloak再次授权了此规则:/

我假设从keycloak的文档中policy enforcement mode设置为Enforcing将拒绝访问范围保存:

策略执行模式规定了在评估授权请求时如何执行策略。“强制”表示即使没有与给定资源关联的策略,默认情况下也会拒绝请求。“允许”表示即使没有与给定资源关联的策略,也允许请求。“已禁用”将完全禁用策略评估并允许访问任何资源。

所以...我在做什么错?我如何才能使该钥匙斗篷拒绝访问save scope(显然,我可以在明确拒绝此范围的地方授予许可。但是我希望默认值如文档中所述是拒绝的)。任何想法都将不胜感激。

查看更多

提问者
Christian
被浏览
44
Scandinave 2020-02-05 02:33

我发现引用此问题的Jira问题显然是一个错误:

https://issues.redhat.com/browse/KEYCLOAK-9483

Keycloak 9.0版附带一个补丁

https://issues.redhat.com/browse/KEYCLOAK-12438。

所以我们只需要等待这个版本