2

Fr3d LDAP バンドル (FOSUserbundle を使用) を Symfony に実装するのに苦労しています。初めてログインでき、データベースに登録されるところまで来ました。しかし、2回目はログインできないという問題が発生しました。「不正なユーザー名とパスワード」をスローするだけです。ここに私の設定があります:

config.yml

fos_user:
   db_driver: orm
   firewall_name: main
   user_class: example\AcmeBundle\Entity\User

fr3d_ldap:
   driver:
      host: ldap.example.de
      port: 389
      useSsl: false;

user:
    baseDn: ou=people, dc=example, dc=de
    attributes:
      - { ldap_attr: uid,  user_method: setUsername }
      - { ldap_attr: mail,  user_method: setEmail }
    filter: (objectClass=*)

Security.yml

security:
   firewalls:
      main:
         pattern: ^/
         fr3d_ldap: ~
         form_login:
           always_use_default_target_path: true
           default_target_path: /profile
           provider: chain_provider
         logout:       true
         anonymous:    true

   providers:
      chain_provider:
        chain:
          providers: [fos_userbundle, fr3d_ldapbundle]
      fr3d_ldapbundle:
          id: fr3d_ldap.security.user.provider    
      fos_userbundle:
          id: fos_user.user_manager    

  encoders:
     example\AcmeBundle\Entity\User : plaintext

  access_control:
      - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
      - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }

  role_hierarchy:
      ROLE_ADMIN:       ROLE_USER
      ROLE_SUPER_ADMIN: ROLE_ADMIN

ネットで見つけられるものはすべて検索して試しましたが、ほとんどすべてのドキュメントがかなり古いため、何も見つかりませんでした。

編集 実際、私の同僚が答えを見つけました。

LDAP がユーザーを認識するためには、「uid=」を介してバインドに uid を提供する必要があります。フィルターに次のような別の引数を与えることで、問題を解決しました。

user:
    baseDn: ou=people, dc=example, dc=de
    attributes:
      - { ldap_attr: uid,  user_method: setUsername }
      - { ldap_attr: mail,  user_method: setEmail }
    filter: (&(objectClass=Person)(uid=%s))

ご迷惑をおかけして申し訳ありません!

4

0 に答える 0