Мне интересно, можно ли иметь только одного поставщика услуг Shibboleth (SP), если вы передаете запросы на все свои сайты через один обратный прокси-сервер (с разгрузкой SSL и т. Д.).
Итак, допустим, у меня есть следующие сайты в разных доменах:
example.org
blog.example.org
wiki.example.org
Сами сайты и их соответствующие веб-серверы находятся на собственной виртуальной машине и не могут напрямую связываться с внешним миром. У меня есть другая виртуальная машина, которая запускает только обратный прокси для всех этих доменов и передает запросы на веб-сервер на соответствующей виртуальной машине. Назовем этот обратный прокси proxy.example.org
(обратите внимание, что это не будет доступным доменным именем).
Теперь вместо настройки SP для каждого сайта я бы хотел установить его только на proxy.example.org
, настроив его так, чтобы каждый запрос
example.org/secure
blog.example.org
wiki.example.org
вызовет аутентификацию Shibboleth. После успешной аутентификации запрос передается. Это возможно?
Я спрашиваю, поскольку нашел только этот ресурс https://wiki.shibboleth.net/confluence/display/SHIB2/SPReverseProxy что я нахожу очень двусмысленным, поскольку в нем только говорится
Так что я действительно не знаю, где должны быть установлены SP ...
Да, это возможно. Несколько лет назад я настроил один прокси-сервер Shib. Вот вся документация, которую я написал тогда (это настройка на Solaris, в Linux кое-что может отличаться). Вам понадобится сервер, на котором находится приложение, которое вы хотите защитить, и прокси-сервер с материалами Shibboleth и некоторыми правилами для прокси.
shibd -t -c /opt/AAI/etc/shibboleth/shibboleth2.xml
Handler type="Status"
и удалите ACL в конце. Ваш обработчик должен выглядеть так: <Handler type="Status" Location="/Status" />
<ApplicationOverride id="<APP NAME>" entityID="https://<DOMAIN>/shibboleth" />
Скопируйте эту заглушку
NameVirtualHost IPADDR:80
<VirtualHost IPADDR:80>
ServerName DOMAIN
ServerAdmin foor@bar.com
Redirect / https://DOMAIN/
ErrorLog var/log/aai.error.log
CustomLog var/log/aai.access.log common
</VirtualHost>
<VirtualHost IPADDR:443>
ServerName DOMAIN
ServerAdmin foor@bar.com
# The Shibboleth handler shall process all HTTPS requests...
<Location />
Order deny,allow
Allow from all
AuthType shibboleth
ShibRequestSetting applicationId APPNAME
ShibUseHeaders On
Require shibboleth
</Location>
# ...but only enforce a Session for the location below.
<Location /secure>
AuthType shibboleth
ShibRequireSession On
ShibRequestSetting applicationId APPNAME
ShibUseHeaders On
Require valid-user
</Location>
SSLEngine On
SSLCertificateFile etc/server.crt
SSLCertificateKeyFile etc/server.key
SSLCertificateChainFile etc/server-ca.crt
SSLProxyEngine on
ProxyRequests off
ProxyPass /secure https://WEBSERVERURL
ProxyPassReverse /secure https://WEBSERVERURL
ProxyPreserveHost On
ErrorLog var/log/APPNAME.error.log
CustomLog var/log/APPNAME.access.log common
</VirtualHost>
Замените ИМЯ ПРИЛОЖЕНИЯ, URL ВЕБ-СЕРВЕРА, IP-АДРЕС и ДОМЕН, вам также придется изменить пути для вашей настройки.
Перезагрузите apache и shibd
наслаждаться