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))
ご迷惑をおかけして申し訳ありません!