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

时间:2019-11-10 17:16:04

标签: keycloak

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

  • 创建了一个领域test
  • 使用democlient创建了一个客户Authorization Enabled
  • 创建领域角色Admin
  • 创建用户adminuser并将其分配给Admin角色

Authorization标签中,带有客户端democlient

  • Settings-> Policy Enforcement Mode中设置为Enforcing
  • 创建2个范围:listsave
  • 使用之前的两个作用域创建资源Resource A
  • Policies标签中,创建一个名为 Only admins 的新Role policy,其中(当然)我只允许管理员: creation of role policy
  • Permissions标签中,创建了一个Scoped-based权限,称为仅允许管理员资源A,列出范围Creation of permission where only an admin can access the Resource A and Scope list

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

Keycloak Authorizing the rule

成功!世界上一切都很好!...除了。 再次与adminuser,角色Admin,资源A,作用域保存(我未定义任何权限的作用域)一起检查策略Keycloak再次授权此规则:/

我假设根据密钥斗篷的文档,将policy enforcement mode设置为Enforcing将拒绝访问范围保存:

  

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

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

1 个答案:

答案 0 :(得分:3)

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

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

Keycloak 9.0版随附一个补丁

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

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