2016-11-16 3 views
0

Ich versuche, eine Verbindung zum LDAP-Server für die Authentifizierung herzustellen. Unser LDAP-Server verwendet SSL, aber wir verwenden kein SSL-Zertifikat.LDAP-Authentifizierungsproblem in Python mithilfe von LDAP-Bibliothek

Im Anschluss ist mein Code:

Ich habe zwei url durch Systemadministrator zur Verfügung gestellt. Es gibt wie folgt:

url1 = "ldap://100.x.x.x:389" 
url2 = "ldaps://10.x.x.x:636" 

Meine erste Frage, welche URL ich verwenden sollte? Was ist der Unterschied zwischen ldap: // und ldaps: //

LDAP-Authentifizierungscode wird wie folgt, habe ich versucht, sowohl (url1 und url2) zu verwenden:

conn = ldap.initialize(url) 

ldap.TLS_AVAIL 
1 

conn.simple_bind_s(
     'CN={0},ou=users,DC=compnay,DC=com'.format(myemail), 
     mypassword 
    ) 

conn.simple_bind(
     'CN={0},ou=users,DC=compnay,DC=com'.format(myemail), 
     mypassword 
    ) 

, wenn ich zum ersten Mal url verwendet (url1) mit simple_bind_s, dann ist folgende Fehlermeldung:

INVALID_CREDENTIALS: {'info': u'80090308: LdapErr: DSID-0C0903D9, comment: AcceptSecurityContext error, data 52e, v2580', 'desc': u'Invalid credentials'}

aber wenn ich mit simple_bind verwenden, gibt es mir int obwohl Passwort oder Benutzernamen falsch ist.

Was ist der Unterschied zwischen simple_bind_s und simple_bind. Wie kann ich simple_bind für die Authentifizierung verwenden?

Antwort

0

Der Unterschied zwischen simple_bind() und simple_bind_s() ist, dass simple_bind() ist asynchrone und simple_bind_s()synchronen ist.

Die synchrone Version lässt Ihr Programm warten, bis es fertig ist und gibt dann die Ergebnisse zurück, wobei die asynchrone Version sofort einen ID-Code zurückgibt und im Hintergrund fortfährt und Sie dann später result() mit dem ID-Code aufrufen Ergebnisse.

So hat Ihr Anruf an simple_bind() wahrscheinlich fehlgeschlagen; Sie wissen es einfach nicht, weil Sie das Ergebnis noch nicht abgerufen haben.

meisten ldap Funktionen haben asynchrone und synchrone Versionen, wie add() und add_s(), delete() und delete_s(), search() und search_s() usw. Einige LDAP-Operationen (vor allem der Suche) eine lange Zeit in Anspruch nehmen kann, so dass Sie die verwenden würden asynchrone Versionen, wenn Sie nicht möchten, dass Ihr Programm lange Pausen hat.

Verwandte Themen