Использование брандмауэров предварительной аутентификации
Использование брандмауэров предварительной аутентификации
Многие модули аутентификации уже предоставлены некоторыми веб-серверами, включая Apache. Эти модули обычно устанавливают некоторые переменные окружения, которые могут быть использованы для определения того, какой пользователь получает доступ к вашему приложению. В исходном состоянии, Symfony поддерживает большинство механизмов аутентификации. Эти запросы называются запросами предварительной аутентификации, так как пользователь уже аутентифицирован, когда достигает вашего приложения.
Caution
Имитация пользователя не совместима
с брандмауэрами предварительной аутентификации, так как имитация требует,
чтобы состояние аутентификации обрабатывалось серверской стороной, а информация
о предварительной аутентификации (SSL_CLIENT_S_DN_Email
, REMOTE_USER
и др.) отправляется по каждому запросу.
Аутентификация сертификата клиента X.509
При использовании сертификатов клиента, ващ веб-сервер самостоятельно проводит
весь процесс аутентификации. Например, с Apache, вы бы использовали директиву
SSLVerifyClient Require
.
Включите аутентификауцию x509 для конкретного брандмауэера в конфигурации безопасности:
1 2 3 4 5 6 7 8 9
# app/config/security.yml
security:
# ...
firewalls:
secured_area:
pattern: ^/
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
# app/config/security.yml
security:
firewalls:
secured_area:
pattern: ^/
remote_user:
provider: your_user_provider
После этого брандмауэр предоставит переменную окружения REMOTE_USER
вашему
поставщику пользователя. Вы можете изменить имя переменной, установив ключ user
в конфигурации брандмауэера remote_user
.
Note
Так же, как и для аутентификации X509, вам нужно будет сконфигурировать "поставщика пользователя". Смотрите предыдущую запись, чтобы узнать больше.