web-dev-qa-db-ja.com

異なるサイトのリバースプロキシで1つのShibboleth SP

1つのリバースプロキシ(SSLオフロードなど)を介してすべてのサイトにリクエストを渡す場合、Shibboleth Service Provider(SP)を1つだけにすることができるのではないかと思います。

それで、私が異なるドメインに次のサイトを持っているとしましょう:

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

サイト自体とそれぞれのWebサーバーはすべて独自のVMにあり、外部と直接通信することはできません。別のVMは、リバースプロキシのみを実行します。これらすべてのドメインを使用して、それぞれのVMのWebサーバーにリクエストを渡します。そのリバースプロキシを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 それだけが言っているので、私は非常に曖昧だと思います

  • resourceの場所/ secureは、ShibbolethSPによって保護されています
  • Shibboleth SPはリクエストをインターセプトし、https://proxy.example.orgのAssertionConsumerServiceURLを使用してSAML2AuthnRequestを生成します。 )/Shibboleth.sso/SAML2/POST

だから私はSPをどこにインストールする必要があるのか​​本当にわかりません...

1
alex

はい、可能です。数年前に単一のShibプロキシを構成しました。これが私が当時書いたすべてのドキュメントです(Solarisでのセットアップ、Linuxではいくつかの違いがあるかもしれません)。保護したいアプリケーションを保持するサーバーと、Shibbolethのものといくつかのプロキシルールを備えたプロキシサーバーが必要になります。

  • インストールゾーン(またはLinuxサーバー)(Shibbolethプロキシとして使用されます)
  • Shib Daemonをコンパイルします(またはLinuxにインストールします)
  • IDP ShibAAIレジストリにホストを登録する
  • デーモン構成を確認してください: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出力が表示されれば、すべて問題ありません。そうでない場合は、シボレスの構成を確認してください。
  • 次に、Apache Webサーバーに移ります。単一のphpまたはhtmlファイルをテストして、Apacheが期待どおりに機能することを確認します。プロキシで保護するアプリケーションを設定します(これは別のサーバーにあります)。ファイアウォールを編集し、(AAI)プロキシからWebサーバーへのアクセスを許可することを忘れないでください。
  • 次に、新しいサービスを追加します(これはAAIプロキシで行われます):
    • Shibboleth(aai)プロキシサーバーを指す新しいCNAMEを作成します
    • Ssh経由でaaiプロキシサーバーにログインします
    • Shibboleth2.xmlの編集:新しいアプリケーションオーバーライドを追加します。このスタブをコピーします<ApplicationOverride id="<APP NAME>" entityID="https://<DOMAIN>/shibboleth" />
    • アプリ名とドメインを置き換えます
    • /opt/csw/Apache2/etc/extra/httpd-vhosts.confを編集します(Linuxでは異なります)
    • 新しい仮想ホストを追加します。
  • このスタブをコピーする

    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>
    
    • APP NAME、WEBSERVER URL、IP ADDR、DOMAINを置き換えます。セットアップのパスも変更する必要があります。

    • Apacheとshibdを再起動します

楽しい

2
embedded