Quiero escribir una consulta LDAP que pruebe si un usuario (sAMAccountName) es miembro de un grupo en particular. ¿Es posible hacer eso para obtener 0 o 1 registros de resultados?
Supongo que puedo obtener todos los grupos para el usuario y probar cada uno para una coincidencia, pero me preguntaba si podría agruparlo en una expresión LDAP.
¿Algunas ideas?
Gracias
Respuestas:
Debería poder crear una consulta con este filtro aquí:
y cuando ejecuta eso contra su servidor LDAP, si obtiene un resultado, su usuario "yourUserName" es de hecho un miembro del grupo "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
¡Intenta ver si esto funciona!
Si usa C # / VB.Net y System.DirectoryServices, este fragmento debería ser el truco:
Advertencia: esto solo probará la membresía inmediata del grupo, y no probará la membresía en lo que se llama el "grupo primario" (generalmente "cn = Usuarios") en su dominio. No maneja membresías anidadas, por ejemplo, el usuario A es miembro del grupo A, que es miembro del grupo B; el hecho de que el usuario A también sea realmente miembro del grupo B tampoco se refleja aquí.
Bagazo
fuente
Si está utilizando OpenLDAP (es decir, slapd), que es común en los servidores Linux, debe habilitar la superposición de memberof para que pueda coincidir con un filtro utilizando el atributo (memberOf = XXX).
Además, una vez que habilita la superposición, no actualiza los atributos memberOf para los grupos existentes (necesitará eliminar los grupos existentes y agregarlos nuevamente). Si habilitó la superposición para comenzar, cuando la base de datos estaba vacía, entonces debería estar bien.
fuente
Agregaría una cosa más a la respuesta de Marc: el atributo memberOf no puede contener comodines, por lo que no puede decir algo como "memberof = CN = SPS *" y esperar que encuentre todos los grupos que comienzan con "SPS".
fuente
Debe establecer su base de consulta en el DN del usuario en cuestión, luego configure su filtro en el DN del grupo del que se pregunta si es miembro. Para ver si jdoe es miembro del grupo de la oficina, su consulta se verá así:
Si desea ver TODOS los grupos de los que es miembro, solo solicite el atributo 'memberof' en su búsqueda, así:
fuente