Apacheの認証でShibboleth SPを用いたSAMLを使う

SP側の環境はUbuntu 12.04 LTS。IdPは今までさんざんいじくってきたSimpleSAMLphp。メタデータを登録するという以外にIdP側でやらないといけないことはない、と期待したい。

CentOS 6.3 (final) にはSPのインストールに当たる libapache2-mod-shib2 パッケージに該当するものがないようなので、おそらくもう少し面倒になるかもしんない

流れは以下の通り。

  • SPとなるShibbolethをインストール (libapache2-mod-shib2)
  • SPの設定ファイル (/etc/shibboleth/shibboleth2.xml)をいじる。
  • /etc/shibbolethに併せてIdPのメタデータを登録する。
  • ApacheにShibbolethを認識させる
  • アクセス制御したいディレクトリに対して実際にShibboleth認証を適用する。
  • IdP側にSPのメタデータを登録する
以下のページを参考にした
以下、やや混乱した部分についてだけ書く。

○ 設定ファイル (shibboleth2.xml) をいじる。IdPのメタデータを登録する

Shibboleth本家のNativeSPGettingStartedでほとんど足りる。

Errorsタグで要求されているlogo.jpg とmain.css は Ubuntuでは /usr/share/shibboleth/ 下にある模様。これらを、こちらにあるとおりAliasで参照させる。


 Alias /shibboleth-sp/logo.jpg /usr/share/shibboleth/logo.jpg
 Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css

か、あるいは例えば /var/www/ 直下におきておき、<Errors supportContact="your@email.com" 
logoLocation="/logo.jpg"  styleSheet="/main.css"/>的に設定すれば、エラーが出た時にしぼれすのワシくさいのが出てくるというだけ。使われるhtmlは /etc/shibboleth/sessionError.html にあるようだ。

ふぇでれーしょんなどに頼らなければ、EntityIDを2個指定するだけでほぼ終わる。 ApplicationDefaults 側が自分のEntityID、SSO側がIdP側のEntityIDなので間違えない。言い方を変えると、一つ目は「自分で勝手に決める」、2つ目は「IdPのメタデータから取ってくる」。

メタデータは /etc/shibboleth/idp-metadata.xml とか作って <MetadataProvider type="XML" file="/etc/shibboleth/idp-metadata.xml"/> とかやればいい。

○ ApacheにShibbolethを認識させる


○ IdP側にSPのメタデータを登録する

こちらの通り wget -O metadata.xml https://(hostname)/Shibboleth.sso/Metadata とかやれば手に入るそうだ。

○ 正しく動作してるか確認

Single Logout をする方法が見当たらない (クッキー削除すれば良いとは思うけど) ので、ChromeであればIncognito Windowを使ってSPを使っているサイトにアクセスしてみると良い。


○ 比較的どうでもよい補足

libapache2-mod-shib2 はShibboleth SPのためのパッケージなので、IdPにはならない。あじゃーん。

このブログの人気の投稿

WiiUのコントローラが通信不良に陥った話

LibreOfficeで表紙、目次、本体でフッターのページ番号のスタイルを変える

技術書典2 あ-03 『もわねっとのPythonの本』