У меня проблема с использованием LdapBundle как с базой данных аутентификации, так и с ldap.
Я пытаюсь сделать это так:
Мой security.yml
security:
encoders:
IMAG\LdapBundle\User\LdapUser: plaintext
Sermeta\HomeBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
multiples:
chain:
providers: [administrators, ldap]
ldap:
id: imag_ldap.security.user.provider
administrators:
entity: { class: "SermetaHomeBundle:User", property: username }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_firewall:
pattern: ^/login$
anonymous: ~
imag_ldap:
check_path: login_check
login_path: login
provider: multiples
logout:
path: /logout
target: /home
secured_area:
pattern: ^/
imag_ldap:
provider: multiples
imag_ldap:
check_path: login_check
login_path: login
provider: multiples
logout:
path: /logout
target: /homeaccess_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
imag_ldap:
client:
host: myipadress
port: 389
skip_roles: true
bind_username_before: true
user:
base_dn: dc=mydc,dc=fr
name_attribute: uid
Но когда я проверяю это, я могу зарегистрировать пользователя с паролем базы данных, но когда я пытаюсь с паролем ldap, у меня появляется ошибка «Bad Credential». (Кажется логичным, если он проверяет только базу данных: /)
Согласно комплектной документации я поставил "bind_username_before: true"
но, похоже, это не проверяется.
(Мне нужна аутентификация базы данных, чтобы получить роли пользователя (когда я закончу с этой аутентификацией @! * …))
Задача ещё не решена.
Других решений пока нет …