2017-02-23 11 views
2

私はsymfonyプロジェクト内のLDAP認証に苦労しています。Symfony3 LDAP認証バインド資格

私のサービスは、次のようになります。

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

バインドおよびLDAPサーバへのクエリの例では正常に動作している:

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

は、今私は、LDAPサーバーに対して認証します。ファイアウォールの設定はhttp://symfony.com/doc/current/security/ldap.html#configuration-example-for-form-loginです。 大きな疑問はここにバインド資格情報を置く場所ですか?ここ

対応するログエントリは次のとおりです。

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

だから、何が不足しているかは明らかだが、私はform_login_ldapするバインド資格情報を提供する方法を見つけることができませんでした。

http://symfony.com/doc/current/reference/configuration/security.htmlの参照には、それらの提供方法も示されていません。

ありがとうございます!

答えて

0

バインド信任状は、ユーザーがフォームから送信したものです。

あなたがちょうどdn_stringを指定する必要があり、ユーザーははldap_bindを呼び出し彼の資格情報を使用して認証されますhttp://symfony.com/doc/current/security/ldap.html#configuration-example-for-form-login

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

こちらを見ての通り。

あなたのユーザー(フォームに入力したユーザー)がldap_bindの権限を持っていますか? LDAPユーザプロバイダの設定に入力したものがあれば、この目的では役に立たない。

フォーム・ログインがこのhttp://symfony.com/doc/current/security/form_login_setup.html

+0

こんにちは、ログインフォーム内資格情報を入力しますがないユーザーは、LDAPサーバにバインドすることはできません、次の行うことができ、従来のログインフォームです。 LDAPサーバーに接続することを許可されている特定のユーザーが1人あります。このユーザーはクエリを実行できます。 このプロジェクトの基本的な要件は、2つのユーザーディレクトリがあることです。 (少なくとも私は2つのユーザディレクトリでそれを解決しなければならないと思う) – marcus

+0

あなたは 'form_login_ldap'を使うことはできません。独自のシステムを実装する必要があります。これを見てくださいhttp://symfony.com/doc/current/security/custom_password_authenticator.html – ste

+0

オカイ - はい私が読んでテストするほど、私は自分のオーセンティケータを書く必要があることを認識しています。 ご支援いただきありがとうございます;) – marcus