Saltar al contenido

Filtro LDAP para atributo en blanco (vacío)

Solución:

Desde LDAP, no existe un método de consulta para determinar una cadena vacía.

La mejor práctica sería eliminar las entradas de datos a LDAP, ya que un valor vacío o nulo en LDAP no tiene ningún valor.

Para determinar esto, necesitaría consultar todos con un valor (administrador = *) y luego usar el código para determinar los que eran un “espacio” o un valor nulo.

Y como dijo Terry, almacenar un valor vacío o nulo en un atributo de sintaxis DN es incorrecto.

Algunas implementaciones de servidor LDAP no permitirán ingresar un DN donde la entrada DN no existe.

Quizás, podría, si sus DN son consistentes, usar algo como:

(&(!(manager=cn*))(manager=*))

Esto debería devolver cualquier valor de administrador donde había un valor para administrador y no comenzaba con “cn”.

Sin embargo, algunas implementaciones LDAP no permitirán búsquedas de subcadenas en atributos de sintaxis DN.

-jim

Busque un valor nulo utilizando 0

Por ejemplo:

ldapsearch -D cn=admin -w pass -s sub -b ou=users,dc=acme 'manager=0' uid manager

Asegúrese de usar el valor nulo en la línea de comando para usar comillas alrededor para evitar que el shell del sistema operativo envíe un carácter nulo a LDAP. Por ejemplo, esto no funcionará:

 ldapsearch -D cn=admin -w pass -s sub -b ou=users,dc=acme manager=0 uid manager

Hay varios sitios que hacen referencia a esto, junto con otros caracteres especiales. Ejemplo:

  • http://www.ldapexplorer.com/en/manual/109010000-ldap-filter-syntax.htm
  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475%28v=vs.85%29.aspx

Este artículo http://technet.microsoft.com/en-us/library/ee198810.aspx me llevó a la solución. El único cambio es la ubicación del signo de exclamación.

(!manager=*)

Parece estar funcionando como se quería.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *