首先,需要使用ldapsearch命令确定每个组的dn。 例如:ldapsearch -x -LLL -H ldap://ad.example.com -D 'domain\username' -W -b 'dc=ad,dc=example,dc=com' '(cn=Group1)' dn ldapsearch -x -LLL -H ldap://ad.example.com -D 'domain\username' -W -b 'dc=ad,dc=example,dc=com' '(cn=Group2)' dn
将所需组的dn添加到搜索基础上,以便将用户绑定到这些组。 例如:searchBase = "cn=Users,dc=ad,dc=example,dc=com" + "," + "cn=Group1,ou=Security Groups,dc=ad,dc=example,dc=com" + "," + "cn=Group2,ou=Security Groups,dc=ad,dc=example,dc=com"
连接到AD LDAP服务器并绑定到管理员帐户。
构建LDAP查询字符串,以便引用CN组的多个组。 如:searchFilter = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" + username + ")(memberof:1.2.840.113556.1.4.1941:=cn=Group1,ou=Security Groups,dc=ad,dc=example,dc=com)(memberof:1.2.840.113556.1.4.1941:=cn=Group2,ou=Security Groups,dc=ad,dc=example,dc=com))"
执行LDAP查询并检查用户是否位于指定的多个组中。 例如:using (var connection = new LdapConnection(new LdapDirectoryIdentifier("ad.example.com"))) { connection.Bind(new NetworkCredential("username", "password")); var searchFilter = "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=" + username + ")(memberof:1.2.840.113556.1.4.1941:=cn=Group1,ou=Security Groups,dc=ad,