Назад | Перейти на главную страницу

Переключение между несколькими типами аутентификации по одному и тому же URL

У меня есть защищенный сайт SSO, который использует аутентификацию Shibboleth и провайдер идентификации SAML. Мне нужно разрешить поисковому роботу Google Search Appliance индексировать URL-адреса. У меня есть требование изменить HTTP-запрос с SAML на обычную аутентификацию только для пользовательского агента GSA без перезаписи URL-адресов. Как я могу настроить Apache или Shibboleth для этого?

В другом потоке я увидел предложение настроить разные подкаталоги для разных типов аутентификации. Как принять несколько вариантов аутентификации в Apache? К сожалению, этот подход удовлетворяет моим требованиям, поскольку он изменяет URL-адрес - GSA будет индексировать дополнительный токен, добавленный к URL-адресу, и выводить его в результатах поиска вместо канонических URL-адресов.

Мой shibboleth2.xml настроен для SAML 2.0. Вот фрагмент vhost в Apache. Есть ли способ добавить условную логику для типа аутентификации на виртуальном хосте в Apache 2.2 или 2.4? Или есть способ решить эту проблему с помощью конфигурации Shib?

<VirtualHost *:443>
DocumentRoot    "/var/dispatcher/cache/www"
# Wish I could make use of this variable to toggle AuthTypes
SetEnvIfNoCase User-Agent ^gsa-crawler is_gsa_crawler

<Location />
    # for end users
    AuthType shibboleth
    ShibRequestSetting requireSession 1
    ShibUseHeaders On
    Require valid-user
</Location>

<Location />
    # for gsa
    AuthType Basic
    AuthName "Secure"
    AuthBasicProvider file
    AuthUserFile path_to/basic_pw_file
    Require valid-user
</Location>

<Directory "/var/dispatcher/cache/www">
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

Я просто спросил нечто подобное и нашел возможное решение, которое может иметь отношение и к этой записи:

Комбинируйте поставщиков аутентификации apache разных типов с базовой аутентификацией, только если это заранее предоставляется клиентом

Вы в основном используете <If></If><Else></Else> check, обернутый вокруг двух наборов директив авторизации.

Я не уверен, что ты сможешь сделать это с mod_access - Насколько я знаю, он не поддерживает выборочный выбор механизмов аутентификации, он разрешает только список механизмов, через которые он может провалиться, пока не выйдет из строя их все или один не преуспеет. И проблема в том, что вы не можете «попробовать SAML», не перенаправив пользователя за пределы сайта.

Если бы вы сделали это на языке программирования с пассивной аутентификацией, я думаю, это было бы тривиально (если операторы и перенаправления). Но используя 'require valid-user' и другие mod_access вещи не приведут вас туда, где, я думаю, вы пытаетесь идти.

Мой ответ в основном относится к Apache <2.4.x, так как я не уверен на 100%, что в 2.4 отсутствует ваш набор функций (они изменили много).