Authentifizieren gegen Active Directory mit Python + ldap
Wie kann ich die Authentifizierung gegen das AD mittels Python + LDAP. Ich bin derzeit mit dem python-ldap-Bibliothek und alle, die es produzieren, sind Tränen.
Kann ich auch nicht binden, führen Sie eine einfache Abfrage:
import sys
import ldap
Server = "ldap://my-ldap-server"
DN, Secret, un = sys.argv[1:4]
Base = "dc=mydomain,dc=co,dc=uk"
Scope = ldap.SCOPE_SUBTREE
Filter = "(&(objectClass=user)(sAMAccountName="+un+"))"
Attrs = ["displayName"]
l = ldap.initialize(Server)
l.protocol_version = 3
print l.simple_bind_s(DN, Secret)
r = l.search(Base, Scope, Filter, Attrs)
Type,user = l.result(r,60)
Name,Attrs = user[0]
if hasattr(Attrs, 'has_key') and Attrs.has_key('displayName'):
displayName = Attrs['displayName'][0]
print displayName
sys.exit()
Läuft das mit [email protected] password username
gibt mir zwei Fehler:
Invalid Credentials
- Wenn ich falsch oder absichtlich falschen Anmeldeinformationen fehlschlägt, sich zu authentifizieren.
ldap.INVALID_CREDENTIALS: {'info': '80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, zum Abendessen schwebt', 'desc': 'Invalid credentials'}
Oder
ldap.OPERATIONS_ERROR: {'info': '00000000: LdapErr: DSID-0C090627, Kommentar: um diesen Vorgang auszuführen eine erfolgreiche Bindung muss abgeschlossen sein, auf die Verbindung., Daten 0, zum Abendessen schwebt', 'desc': 'Operations error'}
Was bin ich sich zu binden, richtig?
Ich bin immer der gleiche Fehler auf fedora und windows.
InformationsquelleAutor der Frage 1729 | 2008-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mir fehlte
Aus der init.
InformationsquelleAutor der Antwort 1729
Wenn Sie offen sind mit pywin32, die Sie verwenden können Win32-aufrufen von Python. Dies ist, was wir tun, in unserer CherryPy-Webserver:
InformationsquelleAutor der Antwort davidavr
Die für mich gearbeitet, l.set_option(ldap.OPT_REFERRALS, 0) war der Schlüssel zum Zugriff auf das ActiveDirectory. Außerdem, ich denke, Sie sollten hinzufügen ein "con.unbind ()", um die Verbindung zu schließen, bevor du den script.
InformationsquelleAutor der Antwort alfredocambera
wenn Sie die Kerberos installiert und im Gespräch mit AD, als würde der Fall sein mit, sagen wir, Centrify Express installiert ist und läuft, können Sie nur verwenden, python-kerberos. E. g.
zurückkehren würde Wahr, ein user 'joe' Passwort 'pizza' in die Kerberos realm X.PIZZA.COM.
(in der Regel, ich denke, das letztere wäre der gleiche wie der name der AD-Domäne)
InformationsquelleAutor der Antwort Dima Pasechnik
Hier sind ein paar einfache code, der funktioniert für mich.
Diese basiert auf einer Vorherige Antwort.
InformationsquelleAutor der Antwort JohnMudd
Sehe ich Ihren Kommentar zu @Johan Buret über die DN nicht beheben Ihr problem, aber ich glaube auch, dass ist das, was Sie in Aussehen sollte.
Gegeben, könnten Sie den DN für den Standard-administrator-Konto im AD werden:
cn=Administrator,cn=Users,dc=mydomain,dc=co,dc=uk - bitte versuchen.
InformationsquelleAutor der Antwort Daniel Bungert
Verwenden Sie einen Definierten Namen verwendet, um sich auf Ihrem system.
"CN=Your user,CN=Users,DC=b2t,DC=local"
Es sollte auf jedem LDAP-system, einschließlich AD -
InformationsquelleAutor der Antwort Johan Buret
Habe ich versucht, hinzuzufügen
aber anstatt eine Fehlermeldung Python hängt und reagiert nicht auf nichts mehr. Vielleicht Baue ich die Suchanfrage falsch, was die Basis ist Teil der Suche? Ich verwende die gleichen wie die DN für die einfache Bindung (oh, und ich hatte zu tun
l.simple_bind
stattl.simple_bind_s
):Ich bin mit AD LDS und die Instanz registriert ist für das aktuelle Konto.
InformationsquelleAutor der Antwort lanoxx
Ich hatte das gleiche Problem, aber es war in Bezug auf die Passwort-Kodierung
Das problem gelöst.
InformationsquelleAutor der Antwort Dr.Ü
Wenn dies Teil einer webapp soll für authentifizierte ad-Benutzer, diese Frage also von Interesse sein könnten.
InformationsquelleAutor der Antwort Jan Jungnickel
Für mich den Wechsel von
simple_bind_s()
zubind()
hat den trick.InformationsquelleAutor der Antwort xcl