Вбудовані постачальники аутентифікації

Дата оновлення перекладу 2023-06-23

Вбудовані постачальники аутентифікації

Якщо вам потрібно додати аутентифікацію у ваш додаток, ми рекомендуємо використовувати аутентифікацію Guard, оскільки вона надає вам повний контроль над процесом.

Але Symfony також надає деяких вбудованих постачальників аутентифікації: системи, які легше реалізовувати, але складніше налаштувати. Якщо ваш випадок застосування аутентифікації повністю збігається з одним із цих, вони будуть чудовим варіантом:

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