2011-05-26 10 views
16

que tiene un esquema que tiene este aspecto: existensola línea de consulta LDAP que enumera los usuarios de un grupo dentro de un supergrupo

  1. usuarios como Usuario A, el usuario B, UserC.
  2. Existen grupos como OverGroup, SubGroup.
  3. OverGroup agrega automáticamente nuevos usuarios como UserA, UserB, etc. a su membresía.
  4. Subgrupo I creado yo mismo. He configurado OverGroup para que sea miembro de SubGroup.

Quiero ser capaz de una línea SubGrupo consulta y recuperar no OverGroup, es decir:

Values: 
CN=OverGroup,OU=Groups,DC=example,DC=com 

pero la enumeración completa de los usuarios reales (usuario A, B, C) dentro de OverGroup, es decir:

Values: 
CN=UserA,OU=OtherOU,DC=example,DC=com 
CN=UserB,OU=OtherOU,DC=example,DC=com 
CN=UserC,OU=OtherOU,DC=example,DC=com 

¿existe un filtro LDAP de una sola línea que podría recuperar esta? (Se pone en la sección de configuración ExternalAuth 'LDAP' en un caso Request Tracker. Bastante seguro de que sólo puedo hacer esto con una consulta el módulo ExternalAuth puede entender.)

Todo lo intento no funciona, y desde mi leyendo, no parece posible enumerar una lista de usuarios dentro de un grupo que es miembro de otro grupo con una consulta de una línea. ¿Pensamientos?

Respuesta

27

Active Directory tiene una opción de filtro de búsqueda especial que le permite filtrar a través de objetos encadenados, como grupos anidados. La capacidad se describe here.

Aquí es un ejemplo de cómo recuperar todos los usuarios de un grupo, incluidos los grupos anidados:

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:={0})) 

donde {0} es el DN del grupo principal.

+1

Funciona, aunque la consulta es lenta como el infierno (~ 5-10 segundos) – GuyMontag

+0

Como tiene que recurrir y devolver todo el subárbol una vez que se identifica la raíz, se espera que el rendimiento de la consulta aumente con la profundidad/amplitud del árbol Es equivalente a una consulta de SQL "Connect By" y, de hecho, puede traducirse en eso debajo de las coberturas. Dicho esto, algo que funciona lentamente suele ser mejor que algo que no funciona en absoluto. Si tiene una solución más rápida, comparta para que todos puedan beneficiarse. – cdeszaq

+0

Si configura la base/raíz como un DN de usuario particular, es rápido, pero obviamente solo verifica si ese usuario es miembro. – DuBistKomisch

5
(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=MPV_BedPlacement,OU=Security Groups,OU=Groups,OU=CCHCS,DC=CCHCS,DC=LDAP)) 

Debe agregar el DN completo para el grupo y sin llaves.

Cuestiones relacionadas