Вбудовані постачальники аутентифікації
Дата оновлення перекладу 2023-06-23
Вбудовані постачальники аутентифікації
Якщо вам потрібно додати аутентифікацію у ваш додаток, ми рекомендуємо використовувати аутентифікацію 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, вам потрібно буде сконфігурувати "постачальника користувачів". Див. попередню примітку, щоб дізнатися більше.