私は WordPress でマルチサイト アプリケーションを実行しています。最近、顧客の 1 社が組織に SSO を導入するよう依頼し、特に Shibboleth を使用するよう要求しました。ただし、他のすべてのサブドメインでは、サイトに固有のデフォルトのログイン/登録ページを使用する必要があります。Shibboleth をインストールし、1 つのサイトが有効になっているテスト サーバーで SP が IdP で認証するようにしました。ただし、マルチサイトに移行すると、Shibboleth Apache モジュールに HTTP リクエストに基づいてコンテンツを保護するように「指示」する方法がわかりません。
たとえば、sp.shibboleth.com が SSO を使用していて、sp1.shibboleth.com が SSO を使用していないとします。ただし、各サブドメインに表示されるページは、同じディレクトリにあるコンテンツとまったく同じです。sp サブドメインでは有効にして、sp1 サブドメインでは有効にしないように shibboleth を構成するにはどうすればよいでしょうか。
ありがとう。
答え1
Apache の場合、HTTP 基本認証と非常によく似たオプションを通じて Shibboleth の使用を強制し、同様に VirtualHost レベルで次のように設定できます。
<VirtualHost *:443>
ServerName site1.example.com
# Useful to distinguish multiple sites within shibboleh.xml
# (for giving them different entityIDs)
<Location />
ShibRequestSetting applicationId site1
</Location>
<Location /Shibboleth.sso>
SetHandler shib
</Location>
# The actual path you want to protect
<Location /wp-whatever>
AuthType Shibboleth
ShibRequestSetting requireSession On
Require shib-session
</Location>
</Location>
この VirtualHost のオプションは、他の vhost には影響しません。
(注: これは Shibboleth SP 3.x 用です。以前はRequire valid-user
SP 2.x でもそうだったと思います。)