2012年1月7日土曜日

OpenAM 9.5  SAML2.0 シングルログアウト

SAML2.0 シングルログアウト(SP先行型)のプロトコルをみてみる。
シングルログアウトに関しては、以下を参照のこと。
http://memoyasu.blogspot.jp/2013/12/saml-20-single-logout.html
 
最初に、「OpenAM 9.5  SAML認証の設定」で構築したSPとIdPを使用し、SAML認証する。認証後に、SP側において、以下のURLを入力し、シングルログアウトする。

http://openam.yasuyasu.com:28080/openam/saml2/jsp/spSingleLogoutInit.jsp?idpEntityID=http://openam.yasuyasu.com:38080/openam&binding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect&RelayState=http://openam.yasuyasu.com:28080

<補足>
今回は、1つのOpenAM上でSPとIdPを共存させているため、SPとIdPで同じ認証クッキーを使用していることになる。そのため、SPからIdPにログアウト要求を送信した後、IdPでセッションが切られたタイミングで、SPのセッションも切られることになる。
上記により、IdPからSPにレスポンスが返ってきてSP側でセッションを切ろうとすると、「com.iplanet.dpro.session.SessionException: Invalid session ID.」のようなエラーが発生する。

◎SP→IdP ログアウト要求
★NameID要素には、SPとIdPで紐づく仮名IDが設定される。
★SessionIndex要素には、切断の対象となるセッションIDが設定される。このセッションIDは、SAML認証の際、IdPからSPへ通知するアサーション内に含まれ、SPとIdPで共通で管理されている。
<samlp:LogoutRequest  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="s239dcd741931119aa038e59df6b080c4b8581faae" Version="2.0" IssueInstant="2012-01-07T14:03:15Z" Destination="http://openam.yasuyasu.com:38080/openam/IDPSloRedirect/metaAlias/idp"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:28080/openam</saml:Issuer><saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" NameQualifier="http://openam.yasuyasu.com:38080/openam" SPNameQualifier="http://openam.yasuyasu.com:28080/openam" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">fdnShhUunBzV4YXtq4U+i8/c+IG6</saml:NameID>
<samlp:SessionIndex xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">s22d9e5d52b4a97720268e30cc09e02257f42c5d01</samlp:SessionIndex></samlp:LogoutRequest>

◎IdP→SP ログアウト応答
<samlp:LogoutResponse ID="s736415dcd1cdc21bdacb4334cd6586806fd44adb" Version="2.0" IssueInstant="2012-01-07T14:03:15Z" Destination="http://openam.yasuyasu.com:28080/openam/SPSloRedirect/metaAlias/sp" InResponseTo="s239dcd741931119aa038e59df6b080c4b8581faae">
<saml:Issuer>http://openam.yasuyasu.com:38080/openam</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success">
</samlp:StatusCode>
</samlp:Status>
</samlp:LogoutResponse>


0 件のコメント: