Problemas python-ldap

jesus f jesusf_bp en yahoo.es
Mar Nov 4 15:10:41 CET 2003


Gracias una vez más por las sugerencias.

He probado a utilizar search_s y también a poner un
BaseDN más alto en la jerarquía y sigue sin funcionar.

He conseguido caracterizar todavía más el problema.
Tengo 2 objetos con uid=qj, cada uno con un
objectclass diferente. Uno de ellos funciona y otro
no. 

Primer script:
******************************************************
import ldap
username = "Directory Manager"
password = "PASSWORD"
baseDN = "o=Filial en Espana,o=EMPRESA"
#searchScope = ldap.SCOPE_BASE
searchScope = ldap.SCOPE_SUBTREE
#searchScope = ldap.SCOPE_ONELEVEL
retrieveAttributes = None
searchFilter =
"(&(uid=qj)(objectclass=EMPRESAAplicacionesExtranet))"
l = ldap.open("MAQUINA:PUERTO");
l.protocol_version = ldap.VERSION3
l.simple_bind(username, password)
res = l.search_s(baseDN, searchScope, searchFilter,
retrieveAttributes)
print res
******************************************************

Resultado:
******************************************************
[]
******************************************************

Segundo script:
******************************************************
import ldap
username = "Directory Manager"
password = "PASSWORD"
baseDN = "o=Filial en Espana,o=EMPRESA"
#searchScope = ldap.SCOPE_BASE
searchScope = ldap.SCOPE_SUBTREE
#searchScope = ldap.SCOPE_ONELEVEL
retrieveAttributes = None
searchFilter =
"(&(uid=qj)(objectclass=EMPRESAUsuarioExtranet))"
l = ldap.open("MAQUINA;PUERTO");
l.protocol_version = ldap.VERSION3
l.simple_bind(username, password)
res = l.search_s(baseDN, searchScope, searchFilter,
retrieveAttributes)
print res
******************************************************

Resultado:
******************************************************
[('uid=qj,ou=EMPRESAUsuariosExtranet,ou=EMPRESAExtranet,o=Filial
en Espana,o=EMPRESA', {'givenname': ['qj'], 'sn':
['usuario'], 'uid': ['qj'], 'EMPRESAempresa': ['qj'],
'EMPRESAperfilaut': ['qj#EADMIN', 'qj#EADMIN/qj',
'qj#TADMEMP/XXX'], 'EMPRESAdocumento':
['ESD12.234.234T'], 'userpassword':
['{SHA}6CSMvnmiiP/sddcwCtLgcXL0h/Y='], 'objectclass':
['top', 'person', 'organizationalPerson',
'inetOrgPerson', 'EMPRESAUsuarioExtranet'], 'cn': ['qj
usuario'], 'c': ['ES'], 'EMPRESAtipodocumento':
['D']})]
******************************************************

Otro apunte: si pongo un filtro sencillo (uid=qj) me
sale el resultado de "ou=EMPRESAUsuariosExtranet".
Como decía en mi primer "post" parece que solamente
reconoce los objetos de tipo "usuario".


Saludos.


 --- Ricardo_Borillo_Doménech <borillo en aditel.org>
escribió: > 
> No te preocupes por el esquema, sólo era para tener
> más detalles ... De
> cualquier forma siempre es aconsejable utilizar
> alguno de los muchos
> esquemas de LDAP ya definidos (aunque no conozco las
> necesidades concretas
> que teneis :)
> 
> Lo que no acaba de cuadrarme es que no funcionen
> filtros más
> generales. Puedes probar a utilizar un baseDN de más
> alto nivel?
> 
> Salut,
>   Ricardo
> 
> 
> El día 04/11/03, jesus f escribió:
> 
> > Hola de nuevo,
> >
> > te contesto a lo que me planteas (gracias por el
> > esfuerzo):
> >
> > *) El atributo SI que existe. Además he probado
> con
> > bastantes de los que disponen las entidades.
> También
> > he probado con <None>.
> >
> > *) El esquema del LDAP no lo he puesto por que no
> > puedo. Actualmente este trabajo es para un cliente
> y
> > no puedo divulgar ningún detalle. De hecho, en el
> > correo inicial he cambiado los nombre de entidades
> y
> > atributos.
> >
> > *) OK. El filtro en el correo estaba mal, pero en
> mis
> > pruebas era correcto.
> >
> > *) He probado con filtros más generales y tampoco
> > funciona.
> >
> > *) He probado con VERSION2 y VERSION3.
> >
> > *) Voy a probar con search_s.
> >
> >
> > Saludos.
> >
> >
> >
> >  --- Ricardo_Borillo_Doménech <borillo en aditel.org>
> > escribió: >
> > > Hola !!
> > >
> > > No conozco que esquema de LDAP estás utilizando,
> > > pero ahí van algunas
> > > causas posibles de fallo:
> > >
> > >   *. El atributo empresa no existe para el tipo
> de
> > > objeto que intentas
> > >      recuperar. No pongas ninguno y te los
> sacará
> > > todos.
> > >
> > >   *. Al filtro le falta un paréntesis al final.
> > > Sería así:
> > >
> > >      (&(seccion=*)(objectclass=SeccionAsociada))
> > >
> > >   *. Prueba primero con un filtro más general
> para
> > > ver cómo están los
> > >      datos dentro del LDAP:
> > >
> > >      (objectclass=*)
> > >
> > > Como comentario te diría que OJO con la versión
> del
> > > protocolo que usas
> > > VERSION2, ya que actualmente la más común es la
> 3.
> > >
> > > Has probado el "search_s" ? Este método realiza
> las
> > > llamadas de forma
> > > síncrona y no tienes que ejecutar un "result"
> > > despues para recuperar la
> > > consulta ... un poco más comodo :)
> > >
> > > Si no te soluciono el problema, detalla un poco
> más
> > > el esquema de LDAP que
> > > utilizas ...
> > >
> > > Salut,
> > >   Ricardo
> > >
> > >
> > > El día 04/11/03, jesus f escribió:
> > >
> > > > Estoy haciendo un código en python para
> recuperar
> > > unos
> > > > datos que están almacenados en un LDAP.
> > > >
> > > > En este LDAP tengo varios tipos de objetos:
> > > usuarios,
> > > > grupos, empresas, aplicaciones y grupos de
> > > > aplicaciones.
> > > >
> > > > El código que estoy usando lo he copiado de
> > > algunos
> > > > ejemplos que he visto por el web:
> > > >
> > > > import ldap
> > > > username = "Directory Manager"
> > > > password = "xxxxxx"
> > > > baseDN = "ou=xxxxxExtranet,o=xxxxxxx,o=es"
> > > > searchScope = ldap.SCOPE_SUBTREE
> > > > retrieveAttributes = ["empresa"]
> > > > searchFilter =
> > > > "(&(seccion=*)(objectclass=SeccionAsociada)"
> > > > l = ldap.open("MAQUINA:PUERTO");
> > > > l.protocol_version = ldap.VERSION2
> > > > l.simple_bind(username, password)
> > > > ldap_result_id = l.search(baseDN, searchScope,
> > > > searchFilter, retrieveAttributes)
> > > > result_set = []
> > > > result_type, result_data =
> > > l.result(ldap_result_id, 0)
> > > > result_set.append(result_data)
> > > > print result_set
> > > >
> > > >
> > > > Pues bien, este código está funcionando
> > > adecuadamente
> > > > para usuarios, pero no funciona de ninguna
> forma
> > > para
> > > > el resto de las entidades.
> > > >
> > > > ¿ Teneis alguna experiencia parecida o alguna
> idea
> > > al
> > > > respecto ?
> > > >
> > > > He mirado en los ficheros de log del LDAP y la
> > > query
> > > > se ejecuta correctamente, salvo que responde
> con 0
> > > > entradas, y estoy seguro de que hay varias.
> > > >
> > > > Gracias por todo. Un saludo.
> > > >
> > > >
> > >
> ___________________________________________________
> > > > Yahoo! Messenger - Nueva versión GRATIS
> > > > Super Webcam, voz, caritas animadas, y más...
> > > > http://messenger.yahoo.es
> > > >
> _______________________________________________
> > > > Python-es mailing list
> > > > Python-es en aditel.org
> > > > http://listas.aditel.org/listinfo/python-es
> > > >
> > >
> > > _______________________________________________
> > > Python-es mailing list
> > > Python-es en aditel.org
> > > http://listas.aditel.org/listinfo/python-es
> >
> >
> ___________________________________________________
> > Yahoo! Messenger - Nueva versión GRATIS
> > Super Webcam, voz, caritas animadas, y más...
> > http://messenger.yahoo.es
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
> >
> 
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es 

___________________________________________________
Yahoo! Messenger - Nueva versión GRATIS
Super Webcam, voz, caritas animadas, y más...
http://messenger.yahoo.es




Más información sobre la lista de distribución Python-es