El día 28 de julio de 2010 23:12, Gustavo Hernández <gustavo.hernan...@etecsa.cu> escribió: > > Saludos a todos: > > Es posible que el asunto, ya haya sido tratado en la lista, mi problema > es que supuestamente el simple_bind(usuario,password), debe validar la > existencia del usuario y el PASSWORD, pero no es así en mi caso. No > obstante en el proceso del search, si el nombre de usuario fue correcto > o sea existe, lo encuentra y es validado el servicio (en este caso > navegacion), en resumen puedo poner un usuario válido con cualquier > password, que lo encuentra sin problemas. > > Alguna sugerencia?
Primero hacer mejor las preguntas: * No especificas que librería usas para el acceso a ldap * No especificas cual es el Distinguised Name en tu ldap, ni como lo tienes montado * En el código fuente no se ve si el usuario que usas para validar es un distinguised name * El código fuente que adjuntas tiene mucha morralla (cosas de ui que vete a saber que es, ...) Te adjunto un ejemplo mejor, aunque parece que no es de la librería que usas (crea la conexión de manera diferente): http://www.grotan.com/ldap/python-ldap-samples.html Supongo que tu problema es el siguiente: Tu dn es algo como: uid=manolito, o=isp Al hacer un search por uid=manolito y servicio=navegación, te devuelve el campo con el dn correcto (y con posibilidad de devolver incorrectos de las ramas no apropiadas). Pero el bind no te funciona porque haces un bind de "manolito" en vez de "uid=manolito, o=isp". Puedes probar esta hipotesis usando las herramientas de consola que seguramente te vengan con tu servidor ldap. Un saludo: Javi > > Gracias por adelantado > > Nota: adjunto parte del código. Se conecta sin problemas > > > try: > l = ldap.initialize(self.servidor_url) > l.protocol_version = ldap.VERSION2 > > except ldap.LDAPError, e: > self.ui.mLogin.setText ('Error en Servidor ') > self.ui.eUsuario.setFocus() > return > > baseDN = "ou=people, dc=myorg, dc=tm" > searchScope = ldap.SCOPE_SUBTREE > retrieveAttributes = None > searchFilter = > "(&(uid="+str(self.ui.eUsuario.text()+")(servicio=navegacion))") > # searchFilter = "(&(uid="+str(self.usuario+"))") > > try: > l.simple_bind(self.usuario,self.contrasena) > > except: > self.ui.mLogin.setText ('NO EXISTE USUARIO') > self.ui.eUsuario.setFocus() > return > > try: > > > ldap_result_id = l.search(baseDN, > searchScope,searchFilter,retrieveAttributes) > > result_set = [] > result = 0 > while 1: > result_type, result_data = > l.result(ldap_result_id, 0) > > if (len(result_data) == 0): > self.ui.mLogin.setText ('SIN ACCESO AL > SERVICIO') > self.ui.eUsuario.setFocus() > break > else: > if result_type == ldap.RES_SEARCH_ENTRY: > result_set.append(result_data) > result = 1 > break > except ldap.LDAPError, e: > self.ui.mLogin.setText ('Error de lectura en LDAP') > self.ui.eUsuario.setFocus() > return > > > --- > This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running > at host imx3.etecsa.cu > Visit our web-site: <http://www.kaspersky.com>, <http://www.viruslist.com> > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/