Встроенные поставщики аутентификации
Дата обновления перевода 2023-06-29
Встроенные поставщики аутентификации
Если вам нужно добавить аутентификацию в ваше приложение, мы рекомендуем использовать аутентификацию Guard, так как она предоставляет вам полный контроль над процессом.
Но Symfony также предоставляет некоторых встроенных поставщиков аутентификации: системы, которые легче реализовывать, но сложнее настроить. Если ваш случай применения аутентификации полностью совпадает с одним из этих, они будут отличным вариантом:
- form_login
- http_basic
- LDAP через HTTP Basic или Form Login
- json_login
- Аутентификация сертификата клиента X.509 (x509)
- Аутентификация, основанная на REMOTE_USER (remote_user)
Аутентификация HTTP Basic
Аутентификация HTTP Basic запрашивает идентификационные данные (имя пользователя и пароль) используя диалог в браузере. Идентификационные данные отправляются без хеширования или шифрования, поэтому рекомендуется использовать ее с HTTPS.
Чтобы поддержать аутентификацию HTTP Basic, добавьте ключ http_basic
к вашему брандмауэру:
1 2 3 4 5 6 7 8 9
# config/packages/security.yaml
security:
# ...
firewalls:
main:
# ...
http_basic:
realm: Secured Area
Вот и все! Symfony теперь будет слушать любые данные аутентификации HTTP basic. Чтобы загрузить пользовательскую информацию, она будет использовать сконфигурированный вами поставщик пользователей.
Примечание: вы не можете использовать выход из системы с http_basic
.
Даже если вы выполните выход, ваш браузер "запоминает" ваши идентификационные данные, и
отправляет их по каждому запросу.
Аутентификация сертификата клиента X.509
При использовании сертификатов клиента, ваш веб-сервер совершает весь процесс
аутентификации самостоятельно. С Apache, к примеру, вы бы использовали директиву
SSLVerifyClient Require
.
Подключите аутентификацию x509 для конкретного брандмауэра в конфигурации безопасности:
1 2 3 4 5 6 7 8 9
# config/packages/security.yaml
security:
# ...
firewalls:
main:
# ...
x509:
provider: your_user_provider
По умолчанию, брандмауэр предоставляет переменную SSL_CLIENT_S_DN_Email
поставщику
пользователей, и устанавливает SSL_CLIENT_S_DN
как идентификационные данные в
PreAuthenticatedToken.
Вы можете переопределить их, установив ключи user
и credentials
в конфигурации
брандмауэра x509, соответственно.
Note
Поставщик аутентификации будет информировать поставщика пользователей только
об имени пользователя, который сделал запрос. Вам нужно будет создать (или
использовать) "поставщик пользователей", на который ссылается параметр конфигурации
provider
(your_user_provider
- в примере конфигурации). Этот поставщик
преобразует имя пользователя в объект Пользователя по вашему выбору. Для более
детальной информации о создании или конфигурации поставщика пользователей, см.:
Аутентификация, основанная на REMOTE_USER
Множество модулей аутентификации, вроде auth_kerb
для Apache, предоставляют
имя пользователя, используя переменную окружения REMOTE_USER
. Этой переменной
можно доверять приложение, так как аутентификация произошла до того, как запрос
добрался до нее.
Чтобы сконфигурировать Symfony, использующую переменную окружения REMOTE_USER
,
включите соответствующий брандмауэр в вашей конфигурации безопасности:
1 2 3 4 5 6 7
# config/packages/security.yaml
security:
firewalls:
main:
# ...
remote_user:
provider: your_user_provider
Затем брандмауэр предоставит переменную окружения REMOTE_USER
вашему поставщику
пользователей. Вы можете изменить имя используемой переменной, установив ключ user
в конфигурации брандмауэра remote_user
.
Note
Как и для аутентификации X509, вам нужно будет сконфигурировать "поставщика пользователей". См. предыдущее примечание, чтобы узнать больше.