【问题标题】:Assign different role to a group member为组成员分配不同的角色
【发布时间】:2022-11-01 22:10:05
【问题描述】:

我正在寻找关于不太特殊情况的建议。

我目前有大约 20000 家商店。 所有商店都有管理员、经理和用户角色。

  • 管理员可以创建/管理任何角色
  • 经理只能创建/管理用户角色
  • 用户可以登录和访问自定义功能。

任何角色都可以分配给 1 个或多个商店,并且可以为该特定商店拥有 1 个或多个角色。 IE:

  • 商店有用户作为管理员和用户作为经理
  • 商店有 userS 作为用户和用户作为管理员

起初,我将我的商店转换为团体。但由于角色绑定到组,我仍然有每个组的 3 个角色(20000 个组和 60000 个角色 - 组 StoreA,角色:StoreA_Admin、StoreA_Manager、StoreA_User 等)。不确定这是否是正确的决定,而且我不确定性能。

然后,我将商店保留为组,但我没有创建角色,而是创建了保存组 uid 的自定义多值属性。这适用于碳以及 API,但控制台不喜欢多值字段。如果引入另一个角色,我将不得不创建另一个字段。

关于如何处理这种情况的任何想法?

【问题讨论】:

  • 嗨@WaZz 你能提供这些细节吗?您使用的是什么版本的 IS?您在 IS 服务器中是否只有一个用户存储?
  • 你好@AnuradhaKarunarathna,我使用 IS 6.0.0 和 1 个用户商店

标签: wso2 wso2-identity-server scim2


【解决方案1】:

我们可以将您的故事映射到 IS 组和角色,如下所示。

请注意,自 IS-5.11.0 以来,组和角色被视为两个独立的资源。

参考:

这种分离在管理控制台中并不清晰可见。因此,您可以使用控制台应用程序来创建组和角色。

  • 组用于表示用户存储中的用户集合。一个用户可以属于零个或多个组。
  • 角色是权限的集合。一个角色可以拥有零个或多个权限。
  • 我们可以将角色分配给组/用户。

由于此声明:

用户可以登录并访问自定义功能。

我们不需要专门为普通业务用户分配任何角色。通过身份服务器基本身份验证登录业务应用程序不需要特定角色。如果您的业务应用程序具有基于角色的访问控制,则还需要为业务用户分配一个角色。否则,每个用户在认证成功后都会获得登录权限,应该足以在应用程序中进行业务操作。

在您的情况下,如果任何商店的管理员具有相同的权限集并且任何经理具有相同的权限集,则您不能只评估权限并授权请求。 例如:如果用户 B 是商店 A 的经理和商店 B 的管理员,则他同时继承了管理员和经理角色相关的权限。但是用户 B 对商店 B 执行请求,您必须仅基于与商店 B 相关的角色来授权请求​​。

【讨论】:

  • 感谢您的回复@AnuradhaKarunarathna。那么对于 20000 家商店,我需要 60000 个组以及 40000 个角色?有这么多的组/角色,它会对性能产生影响吗?
  • 这是提高持久层性能的问题。如果您的用户存储和共享数据库已正确索引并针对用户组和角色检索进行了微调,则身份服务器运行时将能够处理请求。
  • @WaZz 如果您在每个商店中的经理和管理员角色与各自的组具有一对一的映射,那么拥有这些组没有太大价值,因为您可以直接将角色分配给用户。
猜你喜欢
  • 2019-04-12
  • 2021-05-10
  • 2013-10-20
  • 2021-10-28
  • 2020-04-09
  • 2021-11-18
  • 2019-12-19
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多