validar usuario query password ejemplo active c# active-directory ldap

usuario - query active directory c#



LDAP DirectorySearcher con propiedad MemberOf (5)

Quiero encontrar todos los usuarios que son miembros de un grupo en una unidad organizativa determinada, por lo que mi filtro se vería así:

(& (objectClass = usuario) (memberOf = * OU = algo, OU = sí, DC = dev, DC = local))

¿Hay alguna manera de ejecutar un directorysearcher en el miembro de la propiedad con un comodín?


De acuerdo con este hilo , la búsqueda de comodines para DN no es compatible con Active Directory.


Debe configurar la unidad organizativa que desea buscar como la raíz de su DirectorySearcher:

DirectoryEntry myOU = new DirectoryEntry("OU=something,OU=yep,DC=dev,DC=local"); DirectorySearcher srch = new DirectorySearcher(myOU); srch.SearchScope = SearchScope.Subtree;

y luego use solo objectCategory = persona para su filtro - Usaría objectCategory que tiene un solo valor e indexado y, por lo tanto, es rápido en lugar de objectClass (que tiene varios valores y no está indexado):

srch.Filter = "(objectCategory=person)";

Si aún desea verificar la membresía en un grupo además de ser parte de la unidad organizativa, puede agregar esto como parte del filtro:

srch.Filter = "(&(objectCategory=person)(memberOf=cn=Group,ou=yep,dc=dev,dc=local))";

No estoy totalmente seguro acerca de los comodines: en general, los filtros de búsqueda LDAP admiten comodines, pero estoy un poco indeciso sobre el uso de un comodín en un RDN como este DN de grupo aquí.

Bagazo


No especifique la cláusula memberOf . Solo usa "(objectClass=user)"


No especifique una cláusula memberOf.


Así es como hice esto, el nombre LDAP es el grupo para el que necesitas miembros

DirectoryEntry entry = new DirectoryEntry("LDAP://<COMPANYLDAP>/CN=<Group Name>,OU=something,OU=yep,DC=dev,DC=local"); DirectorySearcher Dsearch = new DirectorySearcher(entry); SearchResult sResultSet = Dsearch.FindOne(); GetProperty(sResultSet, "member"); public static void GetProperty(SearchResult searchResult, string PropertyName) { StringBuilder strb = new StringBuilder(); if (searchResult.Properties.Contains(PropertyName)) { ResultPropertyValueCollection rc = searchResult.Properties[PropertyName]; foreach (string name in rc) { DirectoryEntry entry = new DirectoryEntry("LDAP://<COMPANYLDAP>/" + name); DirectorySearcher Dsearch = new DirectorySearcher(entry); //Dsearch.Filter = name; SearchResult sResultSet = Dsearch.FindOne(); strb.AppendLine(GetPropertyvalue(sResultSet, "displayname") + "," + GetPropertyvalue(sResultSet, "mail")); } } File.WriteAllText(strb.ToString(), "c://Users.txt"); }