注意 |
---|
本稿でSLOの設定方法を説明していますが、学認のIdP/SPに対してSLOの実装を強制もしくは推奨するものではありません。 2016年9月時点で学認が把握している範囲においてSLOを実装しているIdP/SPは少数であり、対向のIdPもしくはSPが全てSLOに対応していることを期待することはできません。すなわち、仮に自組織の学認参加IdPでSLO対応したとしても、それにより学認の全てのSPからログアウトできるかのような説明は避けてください。 ひとまず、学内サービスと学内IdPのように限られた範囲でSLOを有効化する際の参考として、ご利用いただければと思います。 |
情報 |
---|
以下の手順でメタデータにフロントチャネルのエンドポイントのみを記載していますが、これはユーザにSLOを実行するか否かの選択肢を残すためです。もしかしたら「IdPからもログアウトしたくない」という要望があるかもしれませんが、それは今後の検討課題です。 なお、SPからのリクエストをバックチャネルを用いることは可能ですが、IdPからのバックチャネルリクエストは3.2.1時点で実装されていません(IDP-964)。また、前者を使う際にはIdPのセッションストレージがサーバ側のものを用いていることを確認してください。 |
ShibbolethにおけるSLO (Single Logout) の設定方法を記載します。
目次 |
---|
前提
IdP/SPはそれぞれ以下のバージョンであることを前提とします。
- IdP: 3.2.1
- SP : 2.6.0
IdPの設定
メタデータへ<SingleLogoutService>を追加
IdPのメタデータに <IDPSSODescriptor>
の子要素として <SingleLogoutService>
を追加します。LocationのIdPのホスト名部分は適宜読み替え適切に設定して下さい。IdPが特殊な設定でなければ、ホスト名部分のみ合わせれば問題ありません。
パネル |
---|
</ds:KeyInfo> </KeyDescriptor> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://IdPのホスト名/idp/profile/SAML2/POST/SLO"/> ← 追加 <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https:// <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://IdPのホスト名/idp/profile/Shibboleth/SSO"/> <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https:// <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https:// </IDPSSODescriptor> |
注意 | |||||
---|---|---|---|---|---|
メタデータ内の要素は並び順が決まっているものがありますので注意してください。特に
|
idp.propertiesの変更
idp.propertiesの以下の箇所を変更します。
パネル | ||
---|---|---|
| ||
|
また、SLOとして必須ではありませんが、以下の箇所を変更することでSLO実行時に画面に表示されるSPの情報がURLからメタデータ由来のDisplayNameに変化します。
パネル | ||
---|---|---|
| ||
|
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
SPの設定
shibboleth2.xmlの設定
SPでのログアウトをトリガーとしてSLOを駆動するためには、shibboleth2.xmlのSessions要素内のLogout要素に以下のように"SAML2"が設定されている必要があります。デフォルト設定ですので、変更していない場合は追加設定は不要ですが、"SAML2"の部分が削除されている場合は追加してください。
パネル |
---|
|
メタデータへ<SingleLogoutService>を追加
SPのメタデータに <SPSSODescriptor>
の子要素として <SingleLogoutService>
を追加します。LocationのSPのホスト名部分は適宜読み替え適切に設定して下さい。SPが特殊な設定でなければ、ホスト名部分のみ合わせれば問題ありません。
パネル |
---|
|
注意 | |||||
---|---|---|---|---|---|
メタデータ内の要素は並び順が決まっているものがありますので注意してください。特に
|
SLOの実行
SP-initiatedのSLO
上記設定を行ったSPにおいて、ログインしている状態であれば次のURLにアクセスすることで、接続しているIdP、及びIdPとの間に認証セッションが確立している全てのSPからログアウトしようとします。
パネル |
---|
https://SPのホスト名/Shibboleth.sso/Logout |
この操作によりIdPからログアウトするためには、前述したIdPのメタデータへの<SingleLogoutService>
の追加が必要です。
また、他のSPからログアウトするためには、そのSP側で、前述したSPのメタデータへの<SingleLogoutService>
の追加が実施されている必要があります。
パネル | ||||||
---|---|---|---|---|---|---|
https://SPのホスト名/Shibboleth.sso/Logout にアクセス後の画面遷移 SP-initiatedのSLO実行時でもIdPの画面に遷移します。
https://SPのホスト名/Shibboleth.sso/Logout にアクセスした際に他のSPにログインしていない場合の画面遷移 アクセスしたSP及びIdPからのログアウトが実施されSLOが完了します。IdPの画面で完了するのは Async SLOの挙動であり、SPの設定で大元のSPの画面への遷移を強制することも可能です。 |
IdP-initiatedのSLO
ログインしているIdPの次のURLにアクセスすることで、アクセスしたIdP、及びIdPとの間に認証セッションが確立している全てのSPからログアウトしようとします。
パネル |
---|
https://IdPのホスト名/idp/profile/Logout |
この操作によりSPからログアウトするためには、SP側で、前述の通りSPメタデータへ <SingleLogoutService>
が追加されている必要があります。
パネル | ||||||
---|---|---|---|---|---|---|
https://IdPのホスト名/idp/profile/Logout にアクセス後の画面遷移 認証セッションが確立している全てのSPがログアウト対象として一覧に表示されます。
|
注意 |
---|
SPのSLO対応について、Shibbolethセッションを使ってWebアプリケーションを構成している場合はこの手順で完了ですが、Webアプリケーションで独自のセッションを管理している場合、Shibbolethセッションと連動させるためにいくつかの改修が必要です。
参考: https://wiki.shibboleth.net/confluence/display/SHIB2/SLOWebappAdaptation |
注意 |
---|
なお、SLOに対応したIdP/SPを運用している場合、SP証明書が署名用途で用いられる、およびIdP証明書が暗号化用途で用いられる可能性があるため、証明書の更新時にはより一層の注意を払っていただく必要があります。 |
注意 |
---|
IdP 3.3.1より前のバージョンではIE / EdgeでのSLOに問題があることが分かっています。最新バージョンをお使いください。 |
注意 |
---|
IdP 3.2.1時点では上記操作実行後Webブラウザが次のようなエラーメッセージを表示する画面へ遷移し、SPからのログアウトが実施されません。(IdPからはログアウトされています) 本件はIdP 3.3.0で修正されています。 -- |
参考: