我需要能够限制资源对象上各个属性的突变。
例如:允许John更新Foo.bar和Foo.baz,但只允许Jane更新Foo.bar
在Keycloak中有什么方法可以做到这一点吗?也许有一个JavaScript策略执行器会根据一系列细粒度的范围(foo:bar:update,foo:baz:update)或类似内容检查PUT的有效负载?
答案 0 :(得分:1)
不确定您的用例,您可以使用AuthorizationContext.hasResourcePermission("Foo.bar").
来检查Keycloak为经过身份验证的用户授予的权限
您可以检查身份验证quickstarts来了解如何获取AuthorizationContext
答案 1 :(得分:-3)
在体系结构PoV中,策略执行-授权-本身应由 API网关执行。网关会将传入的请求与一组预定义的策略进行比较,然后对请求进行授权。
在Keycloak中,您可以组合使用 Groups 和 Roles 。组可以具有定义的角色,该角色将应用于组的所有成员。因此,您创建的用户是多个组的成员,从而导致具有多个角色。一个不错的好处是能够根据用户的组成员身份列出用户。
PS:就我个人而言,我没有使用 Scopes 的经验,但是它们也应该起作用。
示例:
您将创建具有角色Bar
的组BAR
和具有角色Baz
的{{1}}。然后,您将用户John既分配给BAZ
和Bar
,又将Jane分配给Baz
。在API网关上,您根据Bar
标头传入的角色数组检查PUT请求的属性。