0

我想检查用户是否是 c# 中组的成员。该应用程序在 windows mobile 6.1 上运行,我必须将 ldap 函数与[DllImport].

有人有这个样品吗?连接到 ldap 服务器并检查用户/密码是否有效。

4

1 回答 1

2

为什么不使用框架中已有的内容。

看看这个:WindowsPrincipal.IsInRole 方法(字符串)

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
principal.IsInRole("role name");

或者

如果你使用 C#/VB.Net 和 System.DirectoryServices,这个片段应该可以解决问题:

DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");

DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;

srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberof=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";

SearchResultCollection res = srch.FindAll();

if(res == null || res.Count <= 0)
    Console.WriteLine("This user is NOT a member of this group");
else
    Console.WriteLine("This user is INDEED a member of this group");

注意:这只会测试直接组成员身份,不会测试您域中所谓的“主要组”(通常是“cn=Users”)的成员身份。它不处理嵌套的成员资格,例如,用户 A 是组 A 的成员,而组 A 是组 B 的成员——用户 A 确实也是组 B 的成员这一事实并没有在这里得到反映。

参考:如何编写 LDAP 查询来测试用户是否是组的成员?

于 2012-10-16T07:27:32.973 回答