Shibboleth SPがSimpleSAMLphpの SingleLogout 要求で怒った場合

なんと具体的でくだらないんでしょう。

前回 の設定で普通のBASIC認証の代わりにSSOを使うのは出来たのだった。この場合、SPからログアウトするUIがそもそもないので、何も問題なかった。

ただ、SAMLには一斉ログアウト機能があり、これを使うとSimpleSAMLphpの標準のメタデータ記述だと問題になることがあるよーだ。まぁ、ShibbolethをIdPにした時にも同じ問題見たから予想ついたんだけど。

具体的な手順は以下のようになる。

  • IdPはSimpleSAMLphp
  • SPはShibboleth SPとそれ以外でSingleLogoutを行えるもの
  • この状態で
    1. Shibboleth SPからIdPへ認証要求、そして認証
    2. もうひとつのSPで既存の認証情報を使ってログイン (SSO!!)
    3. その「もうひとつ」の方からログアウト



opensaml::SecurityPolicyException
The system encountered an error at Tue Dec 4 17:53:32 2012
To report this problem, please contact the site administrator at admin@example.com.
Please include the following message in any email:
opensaml::SecurityPolicyException at (https://(hostname)/Shibboleth.sso/SLO/Redirect)
Security of LogoutRequest not established.
原因は多々あり得る (バグのケースもあり得るもちろん) のだけど、今回ハマったケースについては、SimpleSAMLphpがデフォルトで色々セキュリティ関係の情報を送らないのがShibbolethと相性悪いんじゃねーか、というのが予想。

というわけでわかってしまえば直す場所は分かりやすい。エラーをはいてるのはShibbolethなので、問題児はSimpleSAMLphpだ! (えっ

具体的には、saml20-sp-remote.xml のShibboleth SPの設定に certData と redirect.sign (SingleLogoutService が Redirect のものになっていると仮定) を追加する。これで直ったように見える。エラーは出なくなった

以前 SP をSimpleSAMLphp、IdPをShibbolethにしたときに似たようなエラーが出て、そのときは 'assertion.encryption' を設定して直したこともある。SimpleSAMLphpは基本的にencryptionしないということで、案外色々駄々漏れなので注意しよう。

ただねー。これでSingleLogoutしたのにShibboleth SPでのログインはまだ有効なように見えていて、なんでなんだろうねー。対症療法なのかもしんない。

このブログの人気の投稿

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

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

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