我们正在考虑将我们在WSO2中的角色存储在内部数据库中 - 暂时。
据我了解,这些内部角色存储在表UM_HYBRID_ROLE中。我要确认的是,这些角色的处理方式与在外部LDAP中配置的角色相同,与XACML策略,声明mgt等有关。
换句话说,我们是否可以假设与内部角色相关的政策/主张与外部角色相关时的行为相同?
WSO2如何处理内部/外部角色(除了它们持续存在的地方)之间是否存在任何差异,我应该注意哪些?
谢谢, 麦克
答案 0 :(得分:7)
内部和外部角色在API级别都被视为相同。唯一不同的是,您会看到Internal
前缀与内部角色。比如,如果您创建名为foo
的角色。它将命名为Internal/foo
。
对于XACML,您不想做任何事情,您可以使用相同的声明uri检索这两种类型的角色。即http://wso2.org/claims/role
。无论用户存储(内部还是外部),它都将返回分配给用户的所有角色。
另外,让我提供一些关于internal
角色的更多信息,
内部角色是Carbon服务器在内部维护的角色。这意味着,这些角色不会与用户存储中的组映射。它们是在Carbon Server的内部数据库表中创建的。内部角色用于以下用例..
当Carbon服务器想要在内部创建角色时,它总是创建一个内部角色。前 - “每个人”角色都是内部角色。它是由Carbon服务器在服务器启动时创建的。因为,Carbon服务器无法始终在用户存储中创建角色。因为无意中在合作用户商店中创建角色并且如果合作用户商店以只读模式连接是不好的,则Carbon服务器不能创建角色。
如果用户存储已连接为只读模式。您无法使用Identity Server管理控制台或API将用户分配给角色。在这种情况下,您可以使用内部角色。
使用Carbon服务器配置多个用户存储时,您可能需要将来自不同用户存储的用户分配到一个角色。这可以通过创建内部角色来完成。可以将来自不同用户存储的用户分配给内部角色。 (因为您无法将用户从一个用户商店分配到另一个用户商店中的分组)
答案 1 :(得分:0)
当用户存储不支持角色时使用,例如只读LDAP。根据我的经验,当使用外部角色时,这将表现相同。您可能只需要在xml策略中重写角色字段,以便IS知道您将其引用到外部字段。只要充当策略信息点的用户存储已正确配置,用户数据是在内部存储还是在外部存储都无关紧要。