Active Directory / LDAP等效命名空间?

时间:2011-01-13 15:10:17

标签: c# namespaces active-directory ldap

在代码中,我的“员工”角色为Category.Role格式,其中Category是一种角色。例如,Foo.BarFoo.Foobar - 都是Foo个角色。 Foo实际上并不是我项目中的命名空间,但我正是这样想的。

Active Directory中是否有一些容器或分层角色/组等效,我可以分配和/或读出LDAP查询,这样我就可以用 any {{查询每个人1}}角色,还是特定的Foo角色?

1 个答案:

答案 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二进制格式并进行查询。