Проблема зацикливания перенаправления с apache_mod_mellon и IDP

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

Я установил модуль аутентификации apache_mod_mellon для Apache, чтобы интегрировать аутентификацию SAML с Azure AD.

Я сгенерировал xml-файл метаданных, ключ и сертификат для файла apache mellon metadata.sh и предоставил их команде Azure для настройки с их стороны. Я использую следующую конфигурацию apache.

Теперь проблема в том, что когда я впервые обращаюсь к myapp.company.com/MyApp (Java Spring веб-приложение), меня перенаправляет на страницу Azure AD, и после ввода учетных данных и OTP, меня перенаправляет обратно на “myapp.company.com/MyApp”. И так меня продолжает отправлять обратно в Azure, а Azure обратно в мое приложение, таким образом создается петля. Какую конфигурацию мне следует изменить, чтобы избежать этого?

Я полагаю, мне не нужно вносить изменения на уровне кода при интеграции с SAML, но сейчас кажется, что мне нужно вносить изменения на уровне кода, чтобы исправить проблему с петлей? Это правильно? Может ли кто-нибудь указать на ошибку в моей конфигурации? Я просмотрел всю документацию и ссылки, которые смог найти, и не вижу полезной информации по этой проблеме с петлей.

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/httpd/url_com.crt
    SSLCertificateKeyFile /etc/httpd/url_com.key
    ServerName myapp.company.com
    ServerAlias myapp.company.com
    ProxyPreserveHost On
    ProxyPass /MyApp http://127.0.0.1:8080/webapp/home
    ProxyPassReverse /MyApp http://127.0.0.1:8080/webapp/home

    MellonCacheSize 100
    MellonLockFile "/run/mod_auth_mellon/lock"
    MellonPostDirectory "/var/cache/mod_auth_mellon_postdata/"
    MellonPostTTL 900
    MellonPostSize 1048576
    MellonPostCount 100

    <Location />
        MellonEnable "auth"
        MellonSPPrivateKeyFile /etc/httpd/mellon/https_url.com_mellon.key
        MellonSPCertFile /etc/httpd/mellon/https_url.com_mellon.cert
        MellonSPMetadataFile /etc/httpd/mellon/https_url.com_mellon.xml
        MellonIdPMetadataFile /etc/httpd/mellon/idp-metadata.xml
        MellonIdPCAFile /etc/httpd/mellon/poc_Dev.pem
        MellonIdpPublicKeyFile /home/apbr1/poc_Dev.cer
    </Location>

    <Location /MyApp>
        AuthType Mellon
        MellonEnable auth
        Require valid-user
        MellonSubjectConfirmationDataAddressCheck "Off"
        MellonSamlResponseDump On
        #MellonPostReplay On
        MellonDecoder "none"
        MellonVariable "<%= $host %>"
        MellonSecureCookie On
        MellonUser "http://schemas.microsoft.com/identity/claims/displayname"
        #ProxyPass http://127.0.0.1:8080/webapp/home
        #ProxyPassReverse http://127.0.0.1:8080/webapp/home
    </Location>
</VirtualHost>

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

Ваша проблема связана с оконечным зацикливанием между приложением и Azure AD при использовании модуля Apache mod_mellon для аутентификации SAML. Это зацикливание может быть вызвано различными факторами в настройке или во взаимодействии с вашим приложением. Рассмотрим некоторые возможные причины и решения:

1. Неправильная маршрутная конфигурация или перенаправления:

Ваша конфигурация Apache включает ProxyPass и ProxyPassReverse, которые могут вызывать зацикливание, если они настроены неправильно. Убедитесь, что маршруты настроены правильно и не вызывают повторное перенаправление к Azure на основе URL пути после аутентификации.

2. Конфигурация SAML:

  • Проверка метаданных: Убедитесь, что метаданные SP и IdP актуальны и корректны. Несоответствие метаданных также может быть причиной зацикливания.

  • Настройка Assertion Consumer Service (ACS) URL: Проверьте, что URL сервиса потребителя утверждений (ACS URL) правильно настроен и соответствует тому, что настроено на стороне Azure AD. ACS URL должен быть адресом, куда Azure отправляет утверждения после аутентификации.

3. Состояние сессии:

  • Проверьте куки: Включение MellonSecureCookie требует правильной настройки и может вызвать проблемы с сессией, если куки не передаются должным образом.

  • MellonVariable: Переменная ${host} может влиять на ссылку, на которую отправляется заявление. Убедитесь, что переменная корректна и не вызывает проблем с маршрутизацией.

4. Возможность кэширования:

Проверьте как кешируется SAML ответ и заявки. Если повторяются предыдущие заявки, это также может вызвать зацикливание.

5. Полнота интеграции с приложением:

Если проблема не решается посредством конфигурации сервера, стоит убедиться, что интеграция с самим приложением не требует доработок. Например, возможно, ваше Java Spring приложение обрабатывает или ожидает данные после аутентификации определённым образом.

Для устранения ошибки также рекомендуется:

  • Включить логирование: Используйте MellonSamlResponseDump On и MellonLogLevel для детального анализа ответов и запросов SAML.

  • Проверить кэшинг модулей Apache: Иногда может быть полезно очистить кэш или перезапустить Apache после изменения конфигурации.

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

Применение этих рекомендаций должно помочь скорректировать вашу конфигурацию и устранить повторяющиеся перенаправления.

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

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