2016-07-05 12 views
0

Ich entwickle gerade eine Webanwendung, in der sich die Benutzer mit ihrem Kontonamen anmelden können. Alle Benutzer sind Teil einer Microsoft-Domäne.LDAP-Authentifizierung mit sAMAccountName und Passwort

Mein Benutzer hat folgende Attribute:

CN: "Test Account" 
displayName: "Test Account" 
distinguishedName: "CN=Test Account,OU=Users,OU=CompanyName,DC=company,DC=com" 
sAMAccountName: "test.account" 
userPrincipalName: "[email protected]" 

Derzeit bin ich versucht, diesen Code zu binden, mit:

$link = @ldap_connect($server); 
@ldap_bind($link, $username, $password); 

das Problem, dass ldap_bind wird, wird fehlschlagen, wenn die display auf die ungleich sAMAccountName.

Also wie kann ich mit Passwort und SAMAccountName binden, ohne die displayName/cn?

+0

Mein Benutzer hat auch das Attribut ** name ** erhalten, das den Wert ** Test Account ** enthält. –

Antwort

0

Vielleicht möchten Sie einen Blick auf this gist werfen.

Es zeigt, wie man einen Benutzer mit irgendeinem eindeutigen Attribut vom LDAP-Eintrag authentifiziert, ohne den DN des Benutzers zu kennen.

Beachten Sie, dass Sie einen Benutzer mit Leseberechtigungen für LDAP benötigen, da AD keine anonyme Bindung zulässt. Und Sie sollten eine ldaps-Verbindung verwenden, daher anstelle von ldap_connect($server, $port)ldap_connect('ldaps://ldap.server.tld:port') verwenden.