2012年1月8日日曜日

Liberty仕様をサポートしている「Lasso」

LassoというC言語で開発されたフリーソフトウェアがあるらしい。
Liberty ID-FF1.2、ID-WSFやSAML2.0などの仕様をサポートしているとのこと。
ちょっと調べてみよう。

http://lasso.entrouvert.org/

ちなみに、公開サイトには、以下をサポートしている旨の記載があった。
Supported Liberty protocol profiles
FeatureIdPSP
Single Sign-On using Artifact ProfileOKOK
Single Sign-On using Browser POST ProfileOKOK
Single Sign-On using LECP ProfileOKOK
Register Name Identifier - (IdP Initiated) - HTTP-RedirectOKOK
Register Name Identifier - (IdP Initiated) - SOAP/HTTPOKOK
Register Name Identifier - (SP Initiated) - HTTP-RedirectOKOK
Register Name Identifier - (SP Initiated) - SOAP/HTTPOKOK
Federation Termination Notification (IdP Initiated) - HTTP-RedirectOKOK
Federation Termination Notification (IdP Initiated) - SOAP/HTTPOKOK
Federation Termination Notification (SP Initiated) - HTTP-RedirectOKOK
Federation Termination Notification (SP Initiated) - SOAP/HTTPOKOK
Single Logout (IdP Initiated) ­ HTTP-RedirectOKOK
Single Logout (IdP Initiated) ­ HTTP-GETOKOK
Single Logout (IdP Initiated) ­ SOAPOKOK
Single Logout (SP Initiated) ­ HTTP-RedirectOKOK
Single Logout (SP Initiated) ­ SOAPOKOK
Identity Provider Introduction (cookie)OKOK
Attribute Query SOAPOKOK
Authorization Decision Query SOAPOKOK

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>


OpenAM 9.5  SAML2.0 認証要求、アサーションの署名設定

OpenAM 9.5 SAML2.0認証の設定」で構築したSPとIdPを使用したSAML2.0認証において、以下のプロトコルに対して署名する(Artifactバインディングが前提)。
●SPからIdPへの認証要求
●SPからIdPへのアサーション要求
●IdPからSPへのアサーション応答


(1)SP側の設定(署名設定)
①管理コンソールにログインし、「連携」タブを押下する。SPのホストエンティティを選択し、「表明コンテンツ」タブにおいて、以下を設定する。
要求/応答署名
署名する要求/応答のチェックボックスを選択
認証要求が署名されました:
表明が署名されました:
POST 応答が署名されました :
アーティファクト応答が署名されました:
ログアウト要求が署名されました:
ログアウト応答が署名されました:
名前 ID 要求の管理が署名されました:
名前 ID 応答の管理が署名されました:

また、署名で使用する証明書のエイリアス名を設定する。
証明書エイリアス

上記を入力した後、「保存」ボタンを押下する


(2)IdP側の設定(署名設定)
①管理コンソールにログインし、「連携」タブを押下する。IdPのホストエンティティを選択し、「表明コンテンツ」タブにおいて、以下を設定する。
要求/応答署名
署名する要求/応答のチェックボックスを選択
認証要求:
アーティファクト解決処理:
ログアウト要求:
ログアウト応答 :
名前 ID 要求の管理:
名前 ID 応答の管理:

また、署名で使用する証明書のエイリアス名を設定する。
証明書エイリアス

上記を入力した後、「保存」ボタンを押下する。


(3)SP側の設定(IdPのメタデータの再インポート)
①管理コンソールにログインし、「連携」タブにおいて、登録済みのIdPのエンティティプロバイダをを削除する。


②「共通タスク」タブにおいて、「リモートアイデンティティプロバイダの登録」をクリックし、IdPのメタデータを再登録する。


③「連携」タブを押下し、再作成したIdPのエンティティプロバイダが以下のように設定されていることを確認する。
要求/応答署名
署名する要求/応答のチェックボックスを選択
認証要求:
アーティファクト解決処理:
ログアウト要求:
ログアウト応答 :
名前 ID 要求の管理:
名前 ID 応答の管理:



また、「連携」タブにおいて、トラストサークルにIdPとSPの両方が設定されていることを確認する。もしIdPが登録されていない場合にはトラストサークルにIdPを追加する。


(4)IdP側の設定(SPのメタデータの再インポート)
①管理コンソールにログインし、「連携」タブにおいて、登録済みのSPのエンティティプロバイダをを削除する。


②「共通タスク」タブにおいて、「リモートサービスプロバイダの登録」をクリックし、SPのメタデータを再登録する。


②「連携」タブを押下し、再作成したSPのエンティティプロバイダが以下のように設定されていることを確認する。
要求/応答署名
署名する要求/応答のチェックボックスを選択
認証要求が署名されました:
表明が署名されました:
POST 応答が署名されました :
アーティファクト応答が署名されました:
ログアウト要求が署名されました:
ログアウト応答が署名されました:
名前 ID 要求の管理が署名されました:
名前 ID 応答の管理が署名されました:



また、「連携」タブにおいて、トラストサークルにIdPとSPの両方が設定されていることを確認する。もしSPが登録されていない場合にはトラストサークルにSPを追加する。



【実機確認で採取したプロトコル】
◎SP→IdP 認証要求
SAMLRequest=nVRLj5swEL7vr0C%2BJzzyILESJJqoaqRty4a0h968ZuhaApt6zG7239cmbETVFVrlwGU8nvleZoOsrhqatuZJHuFPC2g871xXEml3siWtllQxFEglqwGp4TRPv97TaBrQRiujuKrI3WG%2FJRhFsJgV64CFYRnE8%2FViHpdLDqvlInyc2WpUzldRHM8j4v0EjULJLbFjiHdAbOEg0TBpbCkIo0kQToL4FCzpLKaL9S%2Fi7S00IZnpbj0Z01DfVw1YUNNXhq37plzVdLYKVkF%2F4uf59yMUQgM3fg2GpZVg6IuiId5npTl0vLekZBWCg5ExRPEM10rWE%2FwkZCHk73E1Hi9NSL%2BcTtkk1UaUjBvipYigHe6dktjWoHPQz4LDj%2BP9KJNoyOTt7oAGNiS52zibaCegHhg3jpS9ISLJB%2Fdv%2FMGefmtDv9nJh32mKsFfb4mNM6FmZrzbVUQxKbtW2rjgoAFphc0zB%2BChZZUoBegPi2ktqSr1stPAjPXa6BZIcmH4L6cr0f5pQNEFxnph4GxuIbxTdcO0QBdiOLt4JBcHh4N3lTXoCOUtfo62ccrdaFt2QX9RunABt48DipNmEhulTe%2F0e3iuGr0rhxXL%2F%2F9vkvwF&RelayState=s22e53d90a11f0749547f6ce8651b30a12f4827742&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1


◎SP→IdP アサーション要求

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Body><samlp:ArtifactResolve xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://openam.yasuyasu.com:38080/openam/ArtifactResolver/metaAlias/idp" ID="s289c17ed1a094fa1bbfc340f5dda659e641fa7f03" IssueInstant="2012-01-07T06:38:04Z" Version="2.0"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:28080/openam</saml:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#s289c17ed1a094fa1bbfc340f5dda659e641fa7f03">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>XSl41MgGm6dPdYZdxLYo23ndjLU=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
R/20dcqRDLcH6r9y/AGiTbwcx8VL9aTi41OvgEKFSvXlI8k2F0V7KvBjE0W4lBNQ0nX2adKMdwGe
P/b8+vV0iaba0Hx28N/e2+arrEpxRTZWTi5cIBdOzuvPWVUIKFBXmbJQTAAUe5/YSl+FLHqRQ7Lw
SmRoudxLw8QzKmJvTYc=
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<samlp:Artifact>AAQAAD20UPOCqN1ilTMkzO1QBZpwma0r3fX6NOJjDLHDqQR7C4PTzRymMDE=</samlp:Artifact></samlp:ArtifactResolve></soap-env:Body></soap-env:Envelope>



◎IdP→SP アサーション応答

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Body><samlp:ArtifactResponse xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp" ID="s28a88148286d50fc15f42fbf44dec784e2b64e026" InResponseTo="s289c17ed1a094fa1bbfc340f5dda659e641fa7f03" IssueInstant="2012-01-07T06:38:04Z" Version="2.0"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:38080/openam</saml:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#s28a88148286d50fc15f42fbf44dec784e2b64e026">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>PK4FZWgBQE+dVdSCSqwlacNco6A=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
rQxjqgFGU1CbG3wpGEP42Ck/RRtmiYJfAZ8Wt8XILZNEYmYdgmgpnGI7MisrOmwJ+vPkfHW0LDk5
TSTAP8OGqvPWUhlXqljVm6t3hrTrhgf8Qud1wdHu4iqKilm6aIToDhygV+5xy1XP3PFA2d31KFqU
BTiysq0R7fZUtYEgxIE=
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature><samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success">
</samlp:StatusCode>
</samlp:Status><samlp:Response Destination="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp" ID="s2db60675ae6c572dd2ed11dfd14fb33305c6f0dcf" InResponseTo="s22e53d90a11f0749547f6ce8651b30a12f4827742" IssueInstant="2012-01-07T06:38:04Z" Version="2.0"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">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><saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="s2f30cd4e3269ad72cf11c2bfdac792f5ba8ce9aaf" IssueInstant="2012-01-07T06:38:04Z" Version="2.0">
<saml:Issuer>http://openam.yasuyasu.com:38080/openam</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#s2f30cd4e3269ad72cf11c2bfdac792f5ba8ce9aaf">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>8G596aPjgB7kcFe1SQXI3dLfd9Q=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
A5CHLIMbZMaOC8PtVnPcLSC0t+YVkqpkm/jG97MZFWARk6PCUUss3hj7PBUt2/MDE/d62BXMuayR
hqEPkqH/4mAV5yQHrKxMuRGCZOEN0uRm+8Zly7m0PN/fSFgNDdYdFUQYzJ/bYjZsUDQ2gUGOF/px
AHHCAAf0pCiqovhkAwk=
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameQualifier="http://openam.yasuyasu.com:38080/openam" SPNameQualifier="http://openam.yasuyasu.com:28080/openam">fdnShhUunBzV4YXtq4U+i8/c+IG6</saml:NameID><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData InResponseTo="s22e53d90a11f0749547f6ce8651b30a12f4827742" NotOnOrAfter="2012-01-07T06:48:04Z" Recipient="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp"/></saml:SubjectConfirmation>
</saml:Subject><saml:Conditions NotBefore="2012-01-07T06:28:04Z" NotOnOrAfter="2012-01-07T06:48:04Z">
<saml:AudienceRestriction>
<saml:Audience>http://openam.yasuyasu.com:28080/openam</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2012-01-07T06:38:04Z" SessionIndex="s2c6ace7559ca861778dbf69a601d00969ee9de901"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion></samlp:Response></samlp:ArtifactResponse></soap-env:Body></soap-env:Envelope>

2012年1月5日木曜日

OpenAM 9.5  SAML2.0のプロトコルをみてみる

OpenAM 9.5 SAML認証の設定」で構築したSPとIdPを使用し、SAML認証のプロトコルをみてみる。

(1)SP→IdP 認証要求(リダイレクト)
★NameIDのFormatは、persistentである。
★IdPでのユーザ認証の方式は、ID/パスワード認証である。
<samlp:AuthnRequest  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="s2329744f72f06b60951a6890a524e1afafa2bc741" Version="2.0" IssueInstant="2012-01-05T13:15:00Z" Destination="http://openam.yasuyasu.com:38080/openam/SSORedirect/metaAlias/idp" ForceAuthn="false" IsPassive="false" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" AssertionConsumerServiceURL="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:28080/openam</saml:Issuer>
<samlp:NameIDPolicy  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" SPNameQualifier="http://openam.yasuyasu.com:28080/openam" AllowCreate="true"></samlp:NameIDPolicy>
<samlp:RequestedAuthnContext xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Comparison="exact"><saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></samlp:RequestedAuthnContext>
</samlp:AuthnRequest>


(2)IdP→SP アーティファクトの通知(リダイレクト)
http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp?SAMLart=AAQAAD20UPOCqN1ilTMkzO1QBZpwma0rRA5fOm3Cu9AHeeVZnhs7VpcyMDE%3D&RelayState=s2329744f72f06b60951a6890a524e1afafa2bc741


(3)SP→IdP アサーション要求(SOAP)
★IdPから通知されたアーティファクトに基づき、アサーションを要求。
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Body><samlp:ArtifactResolve xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://openam.yasuyasu.com:38080/openam/ArtifactResolver/metaAlias/idp" ID="s2da9e817d7ce7ae5423252cb246690fa5880be20d" IssueInstant="2012-01-05T13:15:19Z" Version="2.0"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:28080/openam</saml:Issuer><samlp:Artifact>AAQAAD20UPOCqN1ilTMkzO1QBZpwma0rRA5fOm3Cu9AHeeVZnhs7VpcyMDE=</samlp:Artifact></samlp:ArtifactResolve></soap-env:Body></soap-env:Envelope>


(4)IdP→SP アサーション応答(SOAP)
★NameID要素には、仮名IDが設定される。
★Conditions要素には、アサーションの有効期間(10分)が設定される。
★Audienceには、アサーションの発行対象者(SP)が設定される。
★AuthnStatement要素には、認証情報が設定される。
 <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Body><samlp:ArtifactResponse xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="s22c6c4da025b049b196de2321f7a97de0040b31fe" InResponseTo="s2da9e817d7ce7ae5423252cb246690fa5880be20d" Version="2.0" IssueInstant="2012-01-05T13:15:20Z" Destination="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:38080/openam</saml:Issuer><samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:StatusCode  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Value="urn:oasis:names:tc:SAML:2.0:status:Success">
</samlp:StatusCode>
</samlp:Status><samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="s2ac8545e563df5960069debf0d4f1cbda2b254440" InResponseTo="s2329744f72f06b60951a6890a524e1afafa2bc741" Version="2.0" IssueInstant="2012-01-05T13:15:18Z" Destination="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:38080/openam</saml:Issuer><samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:StatusCode  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Value="urn:oasis:names:tc:SAML:2.0:status:Success">
</samlp:StatusCode>
</samlp:Status><saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0" ID="s27f94b7401be3bc2a681a0d85df263eef5154320c" IssueInstant="2012-01-05T13:15:18Z">
<saml:Issuer>http://openam.yasuyasu.com:38080/openam</saml:Issuer><saml:Subject>
<saml:NameID 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><saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData NotOnOrAfter="2012-01-05T13:25:18Z" InResponseTo="s2329744f72f06b60951a6890a524e1afafa2bc741" Recipient="http://openam.yasuyasu.com:28080/openam/Consumer/metaAlias/sp" ></saml:SubjectConfirmationData></saml:SubjectConfirmation>
</saml:Subject><saml:Conditions NotBefore="2012-01-05T13:05:18Z" NotOnOrAfter="2012-01-05T13:25:18Z">
<saml:AudienceRestriction>
<saml:Audience>http://openam.yasuyasu.com:28080/openam</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2012-01-05T13:15:18Z" SessionIndex="s26f07b2c5347177a6d9bdb004ef18997daddac601"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement></saml:Assertion>
</samlp:Response></samlp:ArtifactResponse></soap-env:Body></soap-env:Envelope>

OpenAM 9.5  デバックログのレベル設定

OpenAMが出力するデバックログのレベルを変更する手順を説明する。

①管理コンソールにログインする。

②「設計」タブ→「サーバーおよびサイト」→「サーバー名」(http://openam.yasuyasu.com:28080/openam)を押下する。

③「一般」タブにおいて、デバックレベルを変更する。最後に、「保存」ボタンを押下する。
--------------------------------------------------------------------------------------------

製品のすべてのコンポーネントのデバッグレベル。(プロパティー名: com.iplanet.services.debug.level)

2012年1月4日水曜日

OpenAM 9.5  SAML2.0認証の設定

OpenAM9.5  構築手順」で構築したOpenAMを使用し、SAML2.0認証をしてみる。
システムの構成は以下のとおり。同一のPC上に、SPとIdPを構築する。
(同一のドメイン上での認証なので、SAML仕様を使用するメリットはないが。。。)。

SAML2.0仕様のプロトコルおよびバインディング手法は以下を前提とする。
・SP先行型 Webブラウザ SSOプロファイル
・NameIDFormat::Persistent
・バインディング手法: Artifact
・ユーザ認証方法:ID/パスワード認証

(1)SP/IdPの設定
①SP側のOpenAMの管理コンソールにログインする。
「共通タスク」タブにおいて、「ホストサービスプロバイダの作成」をクリックする。

②「新しいトラストサークル」項目に、任意の値(Ex. samlcot)を入力する。値を入力後、「設定」ボタンを押下する。
以上で、SPが作成される。
「連携」タブにおいて、「エンティティプロバイダ」項目に以下のように表示されていることを確認する。
エンティティープロバイダ (1 項目)
  
すべてを選択 すべてを選択解除
名前現在のソート列: 名前 - 降順ソート (逆アルファベット順、数字の大きい順)
プロトコルプロトコル - 昇順ソート (アルファベット順、数字の小さい順)
タイプタイプ - 昇順ソート (アルファベット順、数字の小さい順)
場所場所 - 昇順ソート (アルファベット順、数字の小さい順)
レルムレルム - 昇順ソート (アルファベット順、数字の小さい順)
http://openam.yasuyasu.com:28080/openamSAMLv2SPホスト/

④IdP側のOpenAMの管理コンソールにログインする。
「共通タスク」タブにおいて、「ホストアイデンティティープロバイダの作成」をクリックする。

⑤「署名鍵」項目において、OpenAMが標準で提供しているtestを選択する。また、「新しいトラストサークル」項目に、任意の値(Ex. samlcot)を入力する。値を入力後、「設定」ボタンを押下する。

以上で、IdPが作成される。

④「連携」タブにおいて、「エンティティプロバイダ」項目に、以下のように表示されていることを確認する。

エンティティープロバイダ (1 項目)
  
すべてを選択 すべてを選択解除
名前現在のソート列: 名前 - 降順ソート (逆アルファベット順、数字の大きい順)
プロトコルプロトコル - 昇順ソート (アルファベット順、数字の小さい順)
タイプタイプ - 昇順ソート (アルファベット順、数字の小さい順)
場所場所 - 昇順ソート (アルファベット順、数字の小さい順)
レルムレルム - 昇順ソート (アルファベット順、数字の小さい順)
http://openam.yasuyasu.com:38080/openamSAMLv2IDPホスト/

(2)SPとIdPのメタデータの交換
①IdP側の管理コンソールにログインし、「共通タスク」タブにおいて、「リモートサービスプロバイダの登録」をクリックする。

②「メタデータが登録されているURL」項目に、以下のように、SPのメタデータが公開されているURLを入力する。入力後、「設定」ボタンを押下する。
http://openam.yasuyasu.com:28080/openam/saml2/jsp/exportmetadata.jsp

「連携」タブにおいて、「エンティティプロバイダ」項目に、以下のように表示されていることを確認する。
エンティティープロバイダ (2 項目)
  
すべてを選択 すべてを選択解除
名前現在のソート列: 名前 - 降順ソート (逆アルファベット順、数字の大きい順)
プロトコルプロトコル - 昇順ソート (アルファベット順、数字の小さい順)
タイプタイプ - 昇順ソート (アルファベット順、数字の小さい順)
場所場所 - 昇順ソート (アルファベット順、数字の小さい順)
レルムレルム - 昇順ソート (アルファベット順、数字の小さい順)
http://openam.yasuyasu.com:28080/openamSAMLv2SPリモート/
http://openam.yasuyasu.com:38080/openamSAMLv2IDPホスト/

④SP側の管理コンソールにログインし、「共通タスク」タブにおいて、「リモートアイデンティティープロバイダの登録」をクリックする。

⑤「メタデータが登録されているURL」項目に、以下のように、IdPのメタデータが公開されているURLを入力する。入力後、「設定」ボタンを押下する。
http://openam.yasuyasu.com:38080/openam/saml2/jsp/exportmetadata.jsp

⑥「連携」タブにおいて、「エンティティプロバイダ」項目に、以下のように表示されていることを確認する。
エンティティープロバイダ (2 項目)
  
すべてを選択 すべてを選択解除
名前現在のソート列: 名前 - 降順ソート (逆アルファベット順、数字の大きい順)
プロトコルプロトコル - 昇順ソート (アルファベット順、数字の小さい順)
タイプタイプ - 昇順ソート (アルファベット順、数字の小さい順)
場所場所 - 昇順ソート (アルファベット順、数字の小さい順)
レルムレルム - 昇順ソート (アルファベット順、数字の小さい順)
http://openam.yasuyasu.com:28080/openamSAMLv2SPホスト/
http://openam.yasuyasu.com:38080/openamSAMLv2IDPリモート/

(3)実機確認
①SPとIdPに、認証で使用するテストユーザを作成する(ID連携の方法がPersistentなので必ずSPにも登録が必要)。
(例)ID/PASS   taro/password

②以下にアクセスし、OpenAMのログイン画面が表示されることを確認する。また、認証後、Glassfishのトップページが表示されることを確認する。
(初回の認証時のみ、SPとIdPでIDを紐づけるために、認証画面が2回表示される)

http://openam.yasuyasu.com:28080/openam/saml2/jsp/spSSOInit.jsp?metaAlias=/sp&idpEntityID= http://openam.yasuyasu.com:38080/openam&RelayState= http://openam.yasuyasu.com:28080&binding=HTTP-Artifact