2016-03-29 9 views
0

Hier Skript meines Arbeits Pythons:LDAP uid Pfad nicht bekannt

#!/usr/bin/python 

import ldap, sys 

l = ldap.initialize('ldap://myldapserver:389') 
username = "uid=%s,OU=folder1,OU=myCompany,O=MyCompanyGroup" % "myID" 
password = "mypassword" 
try: 
    l.protocol_version = ldap.VERSION3 
    l.simple_bind_s(username, password) 
    valid = True 
    print "OK" 
    l.unbind() 
except Exception, error: 
    print error 

Nun möchte Ich mag den Benutzer binden, nur nur die Angabe „O = MyCompanyGroup“, und an diesem Teilbaum für die uid suchen. Zum Beispiel kann I-Filter basiert auf "inetOrgPerson"

I

versucht
username = "(&(objectClass=inetOrgPerson)(uid=%s)(O=MyCompanyGroup))" % "myID" 

aber ich ungültige Anmeldeinformationen erhalten.

Danke! Riccardo

Antwort

0

fand die Lösung

#!/usr/bin/python 

import ldap, sys 

l = ldap.initialize('ldap://myldapserver:389') 
search_filter = "(&(uid=myID)(objectClass=inetOrgPerson))" 
base_dn="O=MyCompanyGroup" 
password = "mypassword" 
try: 
    l.protocol_version = ldap.VERSION3 
    result = l.search_s(base_dn, ldap.SCOPE_SUBTREE, search_filter, None) 
    user_dn = result[0][0] 
    print user_dn 
    l.simple_bind_s(user_dn, password) 
    valid = True 
    print "OK" 
    l.unbind() 
except Exception, error: 
    print error