tool query memberof for examples consultas active active-directory ldap ldap-query

active-directory - query - ldap search for group



Consulta LDAP de Active Directory por sAMAccountName y dominio (6)

"Dominio" no es propiedad de un objeto LDAP. Es más como el nombre de la base de datos en la que está almacenado el objeto.

Por lo tanto, debe conectarse a la base de datos correcta (en términos de LDAP: "enlazar al servidor de dominio / directorio" ) para realizar una búsqueda en esa base de datos.

Una vez que se haya enlazado correctamente, su consulta en su forma actual es todo lo que necesita.

Por cierto: Elegir "ObjectCategory=Person" sobre "ObjectClass=user" fue una buena decisión. En AD, el primero es una "propiedad indexada" con excelente desempeño, este último no está indexado y es un poco más lento.

¿Cómo se hace una consulta de una tienda LDAP por sAMAccountName y Domain? ¿Cuál es la propiedad de "dominio" nombrada en términos de Active Directory o LDAP?

Esto es lo que tengo para el filtro hasta ahora. Me gustaría poder agregar en el dominio:

(&(objectCategory=Person)(sAMAccountName=BTYNDALL))



Si usa .NET, use la clase DirectorySearcher . Puede pasar su dominio como una cadena al constructor.

// if you domain is domain.com... string username = "user" string domain = "LDAP://DC=domain,DC=com"; DirectorySearcher search = new DirectorySearcher(domain); search.Filter = "(SAMAccountName=" + username + ")";


Primero, modifique su filtro de búsqueda para buscar solo usuarios y no contactos:

(&(objectCategory=person)(objectClass=user)(sAMAccountName=BTYNDALL))

Puede enumerar todos los dominios de un bosque conectándose a la partición de configuración y enumerando todas las entradas en el contenedor de particiones. Lo siento, no tengo ningún código de C # en este momento, pero aquí hay un código de vbscript que he usado en el pasado:

Set objRootDSE = GetObject("LDAP://RootDSE") AdComm.Properties("Sort on") = "name" AdComm.CommandText = "<LDAP://cn=Partitions," & _ objRootDSE.Get("ConfigurationNamingContext") & ">;" & _ "(&(objectcategory=crossRef)(systemFlags=3));" & _ "name,nCName,dnsRoot;onelevel" set AdRs = AdComm.Execute

De eso puedes recuperar el nombre y el dnsRoot de cada partición:

AdRs.MoveFirst With AdRs While Not .EOF dnsRoot = .Fields("dnsRoot") Set objOption = Document.createElement("OPTION") objOption.Text = dnsRoot(0) objOption.Value = "LDAP://" & dnsRoot(0) & "/" & .Fields("nCName").Value Domain.Add(objOption) .MoveNext Wend End With


La mejor forma de buscar usuarios es (sAMAccountType=805306368) .

O para usuarios con discapacidades:

(&(sAMAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=2))

O para usuarios activos:

(&(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

Considero que LDAP no es tan liviano como se suponía que era.

También es un recurso para consultas LDAP comunes , tratando de encontrarlas usted mismo y tendrá un tiempo precioso y definitivamente cometerá errores.

En cuanto a los dominios: no es posible en una sola consulta porque el dominio forma parte del nombre distinguisedName el usuario ( DN ) que, en Microsoft AD, no se puede buscar mediante la coincidencia parcial.


Puede usar las siguientes consultas

Usuarios cuyo nombre de inicio de sesión (Pre-Windows 2000) es igual a John

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(sAMAccountName=**John**))

Todos los usuarios

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370))

Usuarios habilitados

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(!userAccountControl:1.2.840.113556.1.4.803:=2))

Usuarios discapacitados

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(userAccountControl:1.2.840.113556.1.4.803:=2))

Usuarios de LockedOut

(&(objectCategory=person)(objectClass=user)(!sAMAccountType=805306370)(lockouttime>=1))