active-directory ldap nested

active directory - ldap membresía grupal anidada



active-directory nested (3)

Como tu pregunta, la consulta debería ser

(&(memberOf:1.2.840.113556.1.4.1941:={0})(objectCategory=person)(objectClass=user)(sAMAccountName={1}))

{0} es el grupo anidado, debe ser un nombre distinguido

{1} es el nombre de usuario sAMAccountName que desea (puede usar cualquier otra propiedad de usuario que sAMAccountName dentro de (sAMAccountName={1}) )

A continuación, obtendrá los detalles del usuario para la respuesta si el usuario es miembro del grupo anidado

¿Es posible crear una consulta LDAP que devolverá (o comprobará) usuarios en un grupo anidado? por ejemplo, UserA es miembro de GroupA, y GroupA es miembro de GroupB. Quiero una consulta en GroupB para devolver que UserA es un miembro. Solo LDAP. El servidor es Active Directory.


Debe usar el nombre completo completo de su grupo cuando use memberOf:1.2.840.113556.1.4.1941:= en mi caso CN=MyGroup,OU=User,OU=Groups,OU=Security,DC=domain,DC=com el nombre completo

(&(objectCategory=person)(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=MyGroup,OU=User,OU=Groups,OU=Security,DC=domain,DC=com))

puede obtener el nombre completo de su grupo ejecutando el siguiente código y colocando este filtro (& (objectClass = group) (name = MyGroup))

Imports System.DirectoryServices Module Module1 Sub Main() Dim run As Boolean = True Dim Filter As String While run Console.WriteLine("Enter Filter:") Filter = Console.ReadLine() If Filter = "exit" Then run = False Else checkFilter(Filter) End If End While End Sub Function checkFilter(Filter As String) As Boolean Dim search As New DirectorySearcher("LDAP://dc=Domain,dc=com") Try search.Filter = Filter search.PropertiesToLoad.Add("name") search.PropertiesToLoad.Add("distinguishedName") search.SearchScope = SearchScope.Subtree Dim results As SearchResultCollection = search.FindAll() If results Is Nothing Then Console.WriteLine("Nothing") Return False Else If results.Count() = 0 Then Console.WriteLine("non found") End If Dim result As SearchResult For Each result In results Console.WriteLine(result.Properties("name")(0).ToString()) Console.WriteLine(result.Properties("distinguishedName")(0).ToString()) ''For Each prop In result.Properties("members") '' Console.WriteLine(prop.ToString()) ''Next Next Console.WriteLine(String.Format("{0} Users Found", results.Count())) End If Catch ex As Exception Console.WriteLine(ex.Message) End Try Return True End Function End Module