Symfony 4.3 phpunit Azure SSO аутентификация
В нашем проекте мы используем единый вход Azure, который работает нормально. При первом входе в систему создается новая пользовательская строка в нашей базе данных. Мы не храним пароль, связанный с пользователем, потому что он не нужен (из-за единого входа).
Проблема, однако, в том, что при запуске тестов phpunit аутентификация не работает, поэтому либо аутентификация должна быть отключена (что не очень хорошо, потому что таким образом ничего не требующее пользовательских данных не может быть протестировано), либо в рамках теста она должна аутентифицировать пользователь.
После https://symfony.com/doc/current/testing/http_authentication.html я попытался следовать верхнему разделу. Я получил следующее в моем test\security.yaml
:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
backend_users:
memory:
users:
ict: { name: ict, password: userpass, roles: [ 'ROLE_USER' ] }
firewalls:
main:
provider: backend_users
http_basic: ~
И следующее в моем тесте:
$client = $this->createClient([], [
'PHP_AUTH_USER' => 'ict',
'PHP_AUTH_PW' => 'userpass'
]);
Тем не менее, это сделает $this->getUser()
в моем контроллере типа Symfony\Component\Security\Core\User\User
вместо нашего собственного класса сущности.
Как мы можем аутентифицироваться - либо по имени пользователя (и / или паролю без сохранения пароля в базе данных), либо по единому входу Azure - в наших тестах?