2016-10-27 4 views
0

Ich versuche, einen LDAP-Server zu verbinden. Kunden gesendet folgende 3 info mir:LDAP Bind Operation mit Perl

  1. IP-Adresse des LDAP-Servers
  2. Benutzername
  3. Passwort

ich folgenden Code verwenden:

my $ldap = Net::LDAP->new ($ip_address) or die "[email protected]"; 

my $mesg = $ldap->bind ($username, 
         password => $password, 
           ) or die [email protected]; 

my $result = $ldap->search(
     base => $base, 
     filter => $filter 
     attrs => \@attributes, 
     ); 

die $result->error if $result->code; 

$ result-> Fehlerwert ist:

‚000004DC: LdapErr: DSID-0C090728, Kommentar:. Um diese Operation zu einem erfolgreichen binden ausführen muss auf der Verbindung abgeschlossen sein,

Nach Nachricht, binden ist nicht erfolgreich. Aber es sollte sterben, wenn es nicht erfolgreich war. Ich habe das Passwort geändert, habe den falschen Wert geschrieben, es ist wieder nicht gestorben.

ich abgeladen $ mesg die Rückgabewert binden und sah folgende Meldung:

‚80.090.308: LdapErr: DSID-0C0903C5, Kommentar: AcceptSecurityContext Fehler

Aber es ist auch mit dem korrekten Benutzernamen und Passwort auch. Der Benutzername lautet 'itservice'. Ich verwende wie folgt:

my $mesg = $ldap->bind ('itservice', 
         password => $password, 
         ) or die [email protected]; 

Ich habe versucht, wie folgt, aber Ergebnis ist das gleiche

my $mesg = $ldap->bind ('cn=itservice', 
          password => $password, 
          ) or die [email protected]; 

Gibt es ein anderes Format von Benutzername oder Passwort?

+0

http://search.cpan.org/~marschap/perl-ldap/lib/Net/LDAP.pod#start_tls – xxfelixxx

+0

Möglicherweise müssen Sie den richtigen Port angeben. – xxfelixxx

+0

Können Sie eine 'ldapsearch'-Abfrage über die Befehlszeile ausführen? – xxfelixxx

Antwort

0

Die LDAP-Bind-Anforderung erfordert einen gültigen DN für den Benutzer und nicht nur einen Benutzernamen. Normalerweise suchen Anwendungen zuerst nach Benutzername, um den Benutzer-DN abzurufen, und binden dann als Benutzer.

+0

Ich versuche eine Verbindung vom Terminal wie folgt herzustellen: ldapsearch -h Host -p 389 -x -D "cn = Benutzername" -w Passwort -s Basis -b "DC = facto, DC = intra, DC = tr" aber ich sehe folgendes: ldap_bind: Ungültige Anmeldeinformationen (49) \t Zusatzinfo: 80.090.308: LdapErr: DSID-0C0903C5, Kommentar: AcceptSecurityContext Fehler, Daten 52e, v2580 Kunde sagt, dass Host, Benutzername und Passwort ist richtig. Ist mein Suchbefehl falsch? –

+0

"cn = Benutzername" ist keine vollständige DN. Ein geeigneterer Wert sollte "cn = Benutzername, ou = Personen, dc = Beispiel, dc = com" sein. Das heißt, Sie interagieren mit MS AD, das nicht vollständig LDAP-kompatibel ist, und die zusätzliche Informationsstring enthält mehr Details, die ganz spezifisch für AD sind. –