Shibboleth Embedded Discovery Service をそのまま使う (Ubuntu)
最近のCentOSであればyumで入る。Ubuntuでも大して難しくはない。
ここではUbuntu 12.04 LTSで Shibboleth SP (libapache2-mod-shib2) から 同じホスト上で Shibboleth Embedded Discovery Service を入れる
○ ていうかDiscovery Serviceって何
IdPが複数あるときにそのうち一つを選ぶためのサービス。
SPは自分が許すIdPを知っているはずなので、Discovery ServiceはSP自身が持っていてもおかしくない。SimpleSAMLphpには最初から入っている。
Shibboleth SP自体にはないように見えるが、Discovery Service自体は非常にシンプルであるためなくてもあんまり問題にならないような
○ 方法
https://wiki.shibboleth.net/confluence/display/EDS10/2.+Installation
"Installation on Other Platforms"の通りでほぼ問題ない。
ソースコードをダウンロードして展開すると上記の4ファイルとMakefile等が入っている。あまりMakefileに目を向けず 、上記4つのファイルを /var/www とか、適当な場所に移す。そこは libapache2-mod-shib2 を用いた認証の外側に置いておくこと。でないとDSに飛んでSPがそれを検知してDSに飛んで、というリダイレクトループにハマる。
idpselect_config.js を必要に応じて変更する。Shibboleth SPの shibboleth2.xml をやたらいじってたりしなければ、defaultLogo のjpgファイルを変更する以外にはとくにやることはないはず。
dataSource は Shibboleth SP (libapache2-mod-shib2) を意識した設定になってる。ここに直接アクセスして、JSON形式でIdPの一覧が出ることを確認する。
最後に /etc/shibboleth とかに行き、shibboleth2.xml の以下のSSO周りを変更
これでおしまい。IdP側はDSについて何もやることはない。
ここではUbuntu 12.04 LTSで Shibboleth SP (libapache2-mod-shib2) から 同じホスト上で Shibboleth Embedded Discovery Service を入れる
○ ていうかDiscovery Serviceって何
IdPが複数あるときにそのうち一つを選ぶためのサービス。
SPは自分が許すIdPを知っているはずなので、Discovery ServiceはSP自身が持っていてもおかしくない。SimpleSAMLphpには最初から入っている。
Shibboleth SP自体にはないように見えるが、Discovery Service自体は非常にシンプルであるためなくてもあんまり問題にならないような
○ 方法
https://wiki.shibboleth.net/confluence/display/EDS10/2.+Installation
"Installation on Other Platforms"の通りでほぼ問題ない。
- idpselect_config.js
- idpselect.js
- idpselect.css
の3つをお好みのSPで適切に使う、というEDSの作法。これは暗黙に Shibboleth SP モジュールと連携出来るように作られている (あるいはSAMLにDSのインターフェースに統一したものがあって、Shibboleth SP以外とうまくやれるんかもしれない)
Apacheに組み込んである libapache2-mod-shib2 と連携するには
- index.html
ソースコードをダウンロードして展開すると上記の4ファイルとMakefile等が入っている。あまりMakefileに目を向けず 、上記4つのファイルを /var/www とか、適当な場所に移す。そこは libapache2-mod-shib2 を用いた認証の外側に置いておくこと。でないとDSに飛んでSPがそれを検知してDSに飛んで、というリダイレクトループにハマる。
idpselect_config.js を必要に応じて変更する。Shibboleth SPの shibboleth2.xml をやたらいじってたりしなければ、defaultLogo のjpgファイルを変更する以外にはとくにやることはないはず。
dataSource は Shibboleth SP (libapache2-mod-shib2) を意識した設定になってる。ここに直接アクセスして、JSON形式でIdPの一覧が出ることを確認する。
最後に /etc/shibboleth とかに行き、shibboleth2.xml の以下のSSO周りを変更
<!--
Configures SSO for a default IdP. To allow for >1 IdP, remove
entityID property and adjust discoveryURL to point to discovery service.
(Set discoveryProtocol to "WAYF" for legacy Shibboleth WAYF support.)
You can also override entityID on /Login query string, or in RequestMap/htaccess.
-->
<sso discoveryprotocol="SAMLDS" discoveryurl="https://(sp-host)/(path-to-discovery-service)">
SAML2
</sso>
これでおしまい。IdP側はDSについて何もやることはない。