2017-02-23 4 views
2

Ich habe Probleme mit der LDAP-Authentifizierung in einem Symfony-Projekt.Symfony3 LDAP-Authentifikation Anmeldeinformationen binden

Mein Service sieht wie folgt aus:

ldap: 
    class: Symfony\Component\Ldap\Ldap 
    factory: ['Symfony\Component\Ldap\Ldap', 'create'] 
    arguments: 
     - 'ext_ldap' 
     - host: 'ldap.example.com' 

Der binden und ein Beispiel-Abfrage an den LDAP-Server arbeiten gut:

$ldap = $this->get('ldap'); 
$ldap->bind('binduser', 'bindpw'); 
$query = $ldap->query('OU=MyBusiness,DC=example,DC=com', 'sAMAccountName=xxx'); 

Jetzt habe ich gegen den LDAP-Server authentifizieren möchten. Ich habe die Firewall-Einstellungen von http://symfony.com/doc/current/security/ldap.html#configuration-example-for-form-login verwendet. Aber die große Frage ist, wo man die Bindungsnachweise hier setzt?

Der entsprechende Protokolleintrag ist hier:

php.DEBUG: Warning: ldap_bind(): Unable to bind to server: Invalid credentials 

So ist es ziemlich offensichtlich, was fehlt, aber ich konnte nicht einen Weg, um die Bindeanmeldeinformationen form_login_ldap finden.

Die Referenz auf http://symfony.com/doc/current/reference/configuration/security.html zeigt auch nicht, wie Sie sie bereitstellen.

Danke!

Antwort

0

Die Bindungsanmeldeinformationen sind diejenigen, die vom Benutzer im Formular übermittelt wurden.

Wie Sie hier sehen http://symfony.com/doc/current/security/ldap.html#configuration-example-for-form-login

  service: ldap 
      dn_string: 'uid={username},dc=example,dc=com' 

Sie müssen nur die dn_string angeben und der Benutzer wird mit seinen Anmeldeinformationen Aufruf einer ldap_bind authentifiziert werden.

Ist Ihr Benutzer (der Benutzer, den Sie in das Formular eingegeben haben) berechtigt, ldap_bind zu verwenden? Der Eintrag, den Sie in die Konfiguration des LDAP-Benutzeranbieters eingeben, falls Sie einen haben, ist für diesen Zweck nutzlos.

Das Formular Login ein traditionelles Login-Formular, die http://symfony.com/doc/current/security/form_login_setup.html

+0

Hallos dieses folgende getan werden kann, ohne die Benutzer, die ihre Anmeldeinformationen in dem Login-Formular eingeben, werden nicht an den LDAP-Server zu binden. Es gibt einen bestimmten Benutzer, der sich mit dem LDAP-Server verbinden darf und mit dem ich die Abfragen ausführen kann. Die Grundvoraussetzung für dieses Projekt ist, dass es zwei Benutzerverzeichnisse gibt. (Zumindest muss ich es mit zwei Benutzerverzeichnissen lösen) – marcus

+0

dann kann man 'form_login_ldap' nicht verwenden. Sie sollten Ihr eigenes System implementieren. werfen Sie einen Blick auf diese http://symfony.com/doc/current/security/custom_password_authenticator.html – ste

+0

Okay - ja je mehr ich lese und teste, desto mehr merke ich, dass ich meinen eigenen Authentifikator schreiben muss. Danke für Ihre Unterstützung;) – marcus