Somente um SP Shibboleth no proxy reverso para sites diferentes

1

Eu estou querendo saber se é possível ter apenas um Provedor de Serviços Shibboleth (SP) se você passar solicitações para todos os seus sites por meio de um proxy reverso (com descarregamento SSL, etc.).

Então, digamos que eu tenha os seguintes sites em diferentes domínios:

example.org
blog.example.org
wiki.example.org

Os próprios sites e seus respectivos servidores da Web residem em suas próprias VMs e não podem se comunicar diretamente com o exterior. Eu tenho outra VM que só executa um proxy reverso para todos esses domínios e passa solicitações para o servidor na respectiva VM. Vamos chamar esse proxy reverso proxy.example.org (note que esse não seria um nome de domínio acessível).

Agora, em vez de configurar um SP para cada site, eu gostaria de instalá-lo apenas em proxy.example.org , configurando-o para que cada solicitação

example.org/secure
blog.example.org
wiki.example.org

irá disparar uma autenticação do Shibboleth. Depois de uma autenticação bem-sucedida, a solicitação é passada adiante. Isso é possível?

Estou perguntando como eu só encontrei este recurso link que eu acho muito ambíguo, pois só diz

  • O local / seguro no recurso é protegido por um SP Shibboleth
  • O Shibboleth SP intercepta o pedido e gera um SAML2 AuthnRequest com um AssertionConsumerServiceURL de https: // proxy.example.org /Shibboleth.sso/SAML2/POST

Então eu realmente não sei onde o SP ('s) tem que ser instalado ...

    
por alex 16.12.2015 / 14:06

1 resposta

2

Sim, é possível. Eu configurei um único Shib Proxy alguns anos atrás. Aqui está toda a documentação que eu escrevi naquela época (é uma configuração no Solaris, alguma coisa pode ser diferente no Linux). Você precisará de um servidor que contenha o aplicativo que deseja proteger e um servidor proxy com o material do Shibboleth e algumas regras de proxy nele.

  • Install Zone (ou Linux Server) (será usado como proxy Shibboleth)
  • Compile o Shib Daemon (ou apenas instale-o no linux)
  • Registrar o host no registro AAI do IDP Shib
  • Verifique a configuração do daemon: shibd -t -c /opt/AAI/etc/shibboleth/shibboleth2.xml
  • Depois de instalar o daemon, temos que configurá-lo para uso de "proxy". Mas primeiro, queremos testar nossa configuração inicial. Abra o arquivo shibboleth2.xml e procure por URLs ruins no arquivo. Tudo deve apontar para o seu site. Pesquise Handler type="Status" e remova as ACL's no final. Seu manipulador deve se parecer com: %código%
  • Agora você pode apontar seu navegador para a página Status, link . Se você vir a saída XML, tudo está bem. Se não, verifique sua configuração do shibboleth.
  • Agora vá para o Apache Webserver: Teste um único arquivo php ou html para garantir que o apache funcione conforme o esperado. Configure o aplicativo que você deseja proteger com o proxy (Isso estará em um servidor diferente). Não se esqueça de editar o firewall e permitir o acesso do proxy (AAI) ao servidor da Web.
  • Agora adicionamos um novo serviço (isso é feito no proxy AAI):
    • Crie um novo CNAME que aponte para o servidor proxy shibboleth (aai)
    • Faça login no servidor proxy aai via ssh
    • Editar shibboleth2.xml: adicione uma nova substituição de aplicativo. Copie este stub <Handler type="Status" Location="/Status" />
    • Substituir APP NAME e DOMAIN
    • Edite /opt/csw/apache2/etc/extra/httpd-vhosts.conf (será diferente no linux)
    • Adicione um novo vhost.
  • Copie este stub

    NameVirtualHost IPADDR:80
    <VirtualHost IPADDR:80>
        ServerName DOMAIN
        ServerAdmin [email protected]
        Redirect / https://DOMAIN/
        ErrorLog var/log/aai.error.log
        CustomLog var/log/aai.access.log common
    </VirtualHost>
    <VirtualHost IPADDR:443>
        ServerName DOMAIN
        ServerAdmin [email protected]
        # 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>
    
    • Substitua APP NAME, WEBSERVER URL, IP ADDR e DOMAIN. Você também precisará alterar os caminhos da sua configuração.

    • Reinicie o apache e o shibd

Aproveite

    
por 16.12.2015 / 14:34