Я работаю с ldaptools-bundle , fosuserbundle в конечной точке API.
Мой security.yaml выглядит следующим образом
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
LdapTools\Bundle\LdapToolsBundle\Security\User\LdapUser: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
chain_provider:
chain:
providers: [ldap, fos_userbundle]
fos_userbundle:
id: fos_user.user_provider.username_email
ldap:
id: ldap_tools.security.user.ldap_user_provider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/login
stateless: true
anonymous: true
provider: ldap
json_login:
check_path: /login
username_path: username
password_path: password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
guard:
authenticators:
- ldap_tools.security.ldap_guard_authenticator
main:
pattern: ^/
provider: fos_userbundle
stateless: true
anonymous: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
проблема в том, что аутентификатор ldap guard не проверяет учетные данные.
Когда я заменяю провайдера на ldap вместо fosuser, я получаю код ошибки 500 в классе BasePasswordEncoder, это также происходит, если я использую chain_provider
Предупреждение: hash_equals (): ожидается, что известная строка является строкой, задано значение NULL
Есть конфигурация промаха или что-то еще?Рабочий процесс должен быть следующим:
- Пользователь аутентифицирован на сервере ldap
- Пользователь загружен правильно, а затем lexik позаботится о генерации токена
Примечание: рабочий процесс работает без ldap и токен генерируется.
Заранее спасибо!