我需要有能力限制资源对象上各个属性的变异。
例如:允许John更新Foo.bar和Foo.baz,但只允许Jane更新Foo.bar
在Keycloak中有什么方法可以做到这一点?也许使用JavaScript策略执行器,可以根据一系列细粒度的作用域(foo:bar:update,foo:baz:update)或类似内容检查PUT的有效负载?
在体系结构PoV中,策略实施-授权-本身应由API网关执行。网关会将传入的请求与一组预定义的策略进行比较,然后对请求进行授权。
在Keycloak中,您可以使用Groups
和Roles的组合。组可以具有定义的角色,该角色将应用于组的所有成员。因此,您创建的用户是多个组的成员,导致具有多个角色。PS:就我个人而言,我没有使用Scopes
的经验,但它也应该有效。示例:
您创建具有角色Bar
的组BAR
和具有角色Baz
的BAZ
。然后,您将用户John分配给Bar
和Baz
,将Jane分配给Bar
。在API网关上,根据Authorization
标头传入的角色数组检查PUT请求的属性。