Переключение между несколькими типами аутентификации на одном 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>
2 ответа
Я только что спросил что-то подобное и нашел возможное решение, которое также может иметь отношение к этой записи:
Вы в основном используете <If></If><Else></Else>
проверка обернута вокруг двух наборов директив авторизации.
Я не уверен, что вы могли бы сделать это с mod_access
- насколько я знаю, он не поддерживает выборочный выбор механизмов аутентификации, он только позволяет получить список механизмов, через которые он может провалиться, пока он не провалит их все или один не преуспеет. И проблема в том, что вы не можете "попробовать SAML" без перенаправления пользователя с сайта.
Если бы вы делали это на языке программирования с пассивной аутентификацией, я думаю, это было бы тривиально (если бы операторы и перенаправления). Но с использованием "Требуется действительный пользователь" и другие mod_access
вещи не приведут тебя туда, куда, я думаю, ты пытаешься пойти.
Мой ответ в основном относится к Apache < 2.4.x, так как я не уверен на 100%, что в 2.4 отсутствует ваш набор функций (они сильно изменились).