Необходимо подменить базовый аунтификатор в симфони UserAuthenticator:
secured_area:
pattern: ^/(api|auth)
stateless: true
provider: custom_keycloak_user_provider
entry_point: IDCI\Bundle\KeycloakSecurityBundle\Security\EntryPoint\BearerAuthenticationEntryPoint
custom_authenticators:
- App\Security\UserAuthenticator
logout:
path: idci_keycloak_security_auth_logout
На мок для тестов App\Security\TestUserAuthenticator. В
документации предлагается использовать для этого синтаксис when@test, прописываю в конце config/packages/security.yaml:
when@test:
security:
firewalls:
secured_area:
custom_authenticators:
- App\Security\TestUserAuthenticator
Запускаю тесты:
php vendor/bin/codecept run Api --env=test
Но авторизация все равно проходит через UserAuthenticator. Если по харду заменить аунтификатор:
secured_area:
pattern: ^/(api|auth)
stateless: true
provider: custom_keycloak_user_provider
entry_point: IDCI\Bundle\KeycloakSecurityBundle\Security\EntryPoint\BearerAuthenticationEntryPoint
custom_authenticators:
- App\Security\TestUserAuthenticator
logout:
path: idci_keycloak_security_auth_logout
То все работает как надо - аунтификация проходит через TestUserAuthenticator, но нужно чтобы он заменялся только в тестовом окружении.