ログアウト処理は,ローカルログアウトとグローバルログアウトに大別できます.前者は,SPのセッションを削除するもので,IdPや他のSPのログアウトとは連動しません.後者は,IdPとしてもログアウト処理を施し,全てのSPからログアウトする,すなわち,シングルログアウト(Single Log Out : SLO)を意味します.
ここでは,ローカルログアウトの設定方法について説明します(現在シボレスでは,IdP側においてグローバルログアウト機能が提供されていません).
※Shibboleth IdPバージョン3.2で、グローバルログアウトの機能が提供されるようになりました。
※Shibboleth IdPバージョン2.4には、SLOの一部(前半部分、つまりSPのログアウトをトリガーとしてIdPのほうでもログアウトする)のための機能が追加されました。学認でいますぐに使っていただける状況ではありませんが、IdP側とのネゴシエーションにより個々のIdP-SPの組み合わせで機能させることは可能です。詳細はお問い合わせください。
アプリケーション側の設定
ログアウトボタンが押され,アプリケーション側のログアウト処理を終えた後に,Shibboleth.sso/Logoutにリダイレクトし,SP のLogoutInitiatorを動作させます.returnパラメータを設定することで,ログアウト後のリダイレクト先を指定できます.
例:
shibboleth2.xmlの設定
下記のようにtype=”SAML2”のLogoutInitiatorをコメントアウトすることで,IdP側で対応していないグローバルログアウトを実行させない設定にします.type=”Local”がローカルログアウトのための処理を実行し,当該SPに関するログインセッションを削除します.アプリケーション側で,Shibboleth.sso/Logoutへのリダイレクト時にreturnパラメータが設定されていない場合は,localLogout.htmlが表示されます.
参考:https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLogoutInitiator
関連するQ&A: [Shib-Users] Questions about the Logout initiator redirect(Shibboleth Usersメーリングリスト内)
グローバルログアウトへの対応:
- SP側
- IdP側