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

Только один Shibboleth SP на обратном прокси для разных сайтов

Мне интересно, можно ли иметь только одного поставщика услуг 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 и некоторыми правилами для прокси.

  • Зона установки (или Linux-сервер) (будет использоваться как прокси-сервер Shibboleth)
  • Скомпилируйте Shib Daemon (или просто установите его в Linux)
  • Зарегистрируйте хост в реестре IDP Shib AAI
  • Проверьте конфигурацию демона: shibd -t -c /opt/AAI/etc/shibboleth/shibboleth2.xml
  • После установки демона мы должны настроить его для использования «прокси». Но сначала мы хотим протестировать нашу первоначальную настройку. Откройте файл shibboleth2.xml и найдите в нем неверные URL-адреса. Все должно указывать на ваш сайт. Ищи Handler type="Status" и удалите ACL в конце. Ваш обработчик должен выглядеть так: <Handler type="Status" Location="/Status" />
  • Теперь вы можете указать в браузере страницу статуса, http: //DOMAIN/Shibboleth.sso/Status. Если вы видите вывод XML, все в порядке. Если нет, проверьте свою конфигурацию shibboleth.
  • Теперь о веб-сервере Apache: протестируйте один файл php или html, чтобы убедиться, что apache работает должным образом. Настройте приложение, которое вы хотите защитить с помощью прокси (это будет на другом сервере). Не забудьте отредактировать брандмауэр и разрешить доступ с прокси (AAI) к веб-серверу.
  • Теперь мы добавляем новую службу (это делается на прокси-сервере AAI):
    • Создайте новый CNAME, указывающий на прокси-сервер shibboleth (aai)
    • Войдите на прокси-сервер aai через ssh
    • Изменить shibboleth2.xml: добавить новое переопределение приложения. Скопируйте эту заглушку <ApplicationOverride id="<APP NAME>" entityID="https://<DOMAIN>/shibboleth" />
    • Заменить ИМЯ ПРИЛОЖЕНИЯ и ДОМЕН
    • Отредактируйте /opt/csw/apache2/etc/extra/httpd-vhosts.conf (в Linux будет по-другому)
    • Добавьте новый vhost.
  • Скопируйте эту заглушку

    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

наслаждаться