Keycloak 在KeyClope中评估共享资源权限时的逻辑

Keycloak 在KeyClope中评估共享资源权限时的逻辑,keycloak,Keycloak,在评估共享资源的权限时,我很难理解逻辑 Alice使用范围读取、创建、删除 Alice创建策略isAdmin,验证用户是否是admin Alice创建一个权限,将策略isAdmin应用于资源aliceResource Alice将资源aliceResource与作用域read共享给用户Bob 评估权限 对于范围中的aliceResource,请为未分配角色的bob阅读。 问题1。为什么会忽略应用于资源的策略isAdmin? 对于bob的范围中的aliceResource,删除 问

在评估共享资源的权限时,我很难理解逻辑

  • Alice使用范围
    读取、创建、删除
  • Alice创建策略
    isAdmin
    ,验证用户是否是
    admin
  • Alice创建一个权限,将策略
    isAdmin
    应用于资源
    aliceResource
  • Alice将资源
    aliceResource
    与作用域
    read
    共享给用户
    Bob

评估权限
  • 对于范围
    中的
    aliceResource
    ,请为未分配角色的bob阅读
    。
    问题1。为什么会忽略应用于资源的策略
    isAdmin

  • 对于bob的范围
    中的
    aliceResource
    ,删除
    
    问题2。当bob没有分配角色时,为什么策略资源所有者即使我正在评估范围
    删除
    ,也会授予
    读取
    ? 问题3。当bob担任
    admin
    角色时,为什么结果是permit?,Alice与
    bob
    共享
    read
    not
    delete

如果有人能帮我理解发生了什么,我将不胜感激

谢谢


编辑1。 我已将我的客户评估策略设置为“一致”,我希望所有策略都适用,但如果我评估的用户的角色为“管理员”,而该用户的资源尚未共享,则决定为“授予”,我如何使客户机强制执行所有策略

现在,当资源被共享时,客户端正在我的策略和KeyClope创建的策略之间执行


KeyClope没有明确的拨款决定文件。 这张图是我的理解。关键在于客户决策策略 如果设置为肯定
,则将逻辑。 如果设置一致,则将逻辑。 我制定了自己的权限(读取、删除和创建)和策略。每个权限都有一个作用域(读取、删除或创建)。Bob分配了读取策略,admin分配了所有三个策略。在这种情况下,权限决策策略不起作用(由于在权限和范围之间分配了单个权限)

如果将其设置为禁用
,则任何用户都可以访问aliceResource

这会通过设置客户决策策略影响两种情况。给鲍勃

这会通过设置客户决策策略影响两种情况。管理员

因此,如果您希望只允许bob读取范围和管理三个范围,那么客户机的决定应该是肯定的

这是我的测试结果。

感谢您的回答,我刚刚在我的帖子中添加了一个编辑,我遇到的问题是我需要客户强制执行所有策略,我将我的客户评估策略设置为
一致
。但是,当资源被共享时,评估是在我创建的策略和keydove创建的策略之间执行or。