Принудительная повторная аутентификация с использованием Apache2 OpenID-Connect и провайдера OIDC Entra ID

Вопрос или проблема

У моих пользователей в сети есть учетные записи в Entra ID, поэтому мои веб-сайты позволяют им входить в систему, используя Entra ID от Microsoft в качестве поставщика OpenID Connect.

Мои веб-серверы Apache2 используют mod_auth_openidc для поддержки входа через Microsoft, и это работает отлично.

Некоторые веб-сайты считаются “высокой безопасности”, и при посещении таких сайтов я хотел бы продолжить использовать вход через Microsoft, но заставить пользователей повторно аутентифицироваться (и, желательно, снова пройти многофакторную аутентификацию). (Возможно, было бы приемлемо требовать, чтобы вход был “достаточно недавним”.)

Я понимаю, что можно использовать параметр “max_age=0”, чтобы заставить повторную аутентификацию, но как это следует настраивать на практике?

Я пытался настроить это как часть URI перенаправления регистрации моего приложения в Azure (и на моем сервере Apache), но это не позволяет мне включать параметры в URI. Я заметил, что есть поддержка отправки обратно утверждения “max_age”, поэтому мне кажется, что я близок к правильному решению, но я был бы признателен за подсказку от любого, у кого это работает.

Ответ или решение

Для реализации принудительной повторной аутентификации пользователей при доступе к веб-сайтам с высоким уровнем безопасности с использованием Apache2, OpenID Connect и провайдера OIDC Entra ID, необходимо внести изменения как в конфигурацию Apache, так и в настройку вашего приложения в Azure. Ниже приведены шаги по реализации данной задачи.

Шаг 1: Настройки Azure

  1. Регистрация вашего приложения: Убедитесь, что ваше приложение зарегистрировано в Azure и имеет необходимые разрешения для выполнения аутентификации.

  2. Конфигурация редиректов: В настройках вашего приложения в Azure нет необходимости указывать параметры в URI редиректа, но вы можете передавать параметры в запросе при аутентификации. Поэтому в дальнейшем вам потребуется добавить параметры при выполнении запроса к аутентификации.

Шаг 2: Конфигурация Apache и mod_auth_openidc

  1. Установите модуль mod_auth_openidc: Убедитесь, что у вас установлен и активирован модуль mod_auth_openidc. Для установки вы можете использовать:

    sudo apt-get install libapache2-mod-auth-openidc
  2. Обновите конфигурацию Apache для вашего сайта:

    В конфигурационном файле Apache, относящемся к вашему сайту (например, /etc/apache2/sites-available/your-site.conf), добавьте или измените следующие параметры:

    OIDCProviderMetadataURL https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
    OIDCCryptoPassphrase YOUR_CRYPTO_PASSPHRASE
    OIDCClientID YOUR_CLIENT_ID
    OIDCClientSecret YOUR_CLIENT_SECRET
    OIDCRedirectURI https://your-domain.com/oidc/redirect
    OIDCCCertificateFile /path/to/certificate.pem
    OIDCCertificateKeyFile /path/to/certificate-key.pem
    OIDCUsePkce On
  3. Аутентификация с параметрами:
    Чтобы принудить пользователей к повторной аутентификации, используйте параметр max_age, добавив его в запрос аутентификации. Следующий пример метода аутентификации показывает, как это сделать:

    <Location /secure-area>
       AuthType openid-connect
       Require valid-user
    
       # Принудительная переаутентификация
       OIDCRequestExtra "max_age=0"
    </Location>
  4. Настройка требований к MFA:
    Обязательно используйте настройки Azure AD для интеграции многофакторной аутентификации (MFA). В Azure Active Directory вы можете настроить правила MFA, которые будут применяться к вашим пользователям при повторной аутентификации.

Шаг 3: Тестирование

  1. Перезапустите Apache: После того как вы обновили конфигурацию, не забудьте перезапустить сервер Apache:

    sudo systemctl restart apache2
  2. Тестируйте: Перейдите на защищенную область вашего сайта и убедитесь, что при попытке доступа к ней требуется повторная аутентификация.

Шаг 4: Примечания по отладке

  • Если вы не видите ожидаемого поведения, проверьте журналы Apache для ошибок, связанных с модулем mod_auth_openidc.
  • Убедитесь, что ваши параметры, включая max_age, корректно передаются и обрабатываются.

Следуя данным шагам, вы сможете успешно настроить повторную аутентификацию и требования к многофакторной аутентификации для ваших веб-сайтов с высоким уровнем безопасности.

Оцените материал
Добавить комментарий

Капча загружается...