在代码中,我的“员工”角色为Category.Role
格式,其中Category
是一种角色。例如,Foo.Bar
和Foo.Foobar
- 都是Foo
个角色。 Foo实际上并不是我项目中的命名空间,但我正是这样想的。
Active Directory中是否有一些容器或分层角色/组等效,我可以分配和/或读出LDAP查询,这样我就可以用 any {{查询每个人1}}角色,还是特定的Foo
角色?
答案 0 :(得分:1)
在Active Directory中,您可以将组指定为另一个组的成员。所以,如果我理解正确,你想要的是创建一个名为“Foo”的AD组,然后创建两个名为“Foo.Bar”和“Foo.Foobar”的子组。将这两个子组分配为“Foo”组的成员。
然后,为用户分组“Foo.Bar”。他将扮演“Foo”和“Foo.Bar”的角色。这意味着如果您获得该用户的WindowsPrincipal,则WindowsPrincipal.IsInRole(“Foo”)和WindowsPrincipal.IsInRole(“Foo.Bar”)都将返回true。
如果你没有使用IsInRole()函数检查成员资格但是纯LDAP查询,恐怕我们找不到一种简单的方法来计算嵌套组关系。如果您真的想要查看进行单个LDAP查询调用的方法,请尝试在AD用户对象上查找“tokenGroups”属性。它是由AD在运行中计算的计算属性。它包含所有嵌套的组信息。唯一的是它存储SID。因此,您需要找出AD组的SID,将其转换为LDAP二进制格式并进行查询。