この節では、Oracle OpenSSO Fedlet についての次の情報を記載しています。
Oracle OpenSSO Fedlet は、Java または .NET のサービスプロバイダアプリケーションに配備できる計量なサービスプロバイダ (SP) 実装で、アプリケーションは SAMLv2 プロトコルを使用して Oracle OpenSSO 8.0 Update 2 などのアイデンティティープロバイダ (IDP) とやりとりできるようになります。Fedlet には、お使いのプラットフォームに合わせて 2 つのバージョンが用意されています。
Java Fedlet は OpenSSO 8.0 で最初にリリースされました。詳しくは、『Sun OpenSSO Enterprise 8.0 Deployment Planning Guide』の第 5 章「Using the OpenSSO Enterprise Fedlet to Enable Identity Federation」を参照してください。
.NET Fedlet は OpenSSO 8.0 Update 1 でリリースされました。詳しくは、『Sun OpenSSO Enterprise 8.0 Update 1 Release Notes』の第 10 章「Using the ASP.NET Fedlet with OpenSSO Enterprise 8.0 Update 1」を参照してください。
Oracle OpenSSO 8.0 Update 2 では、次の Fedlet が利用できます。
Oracle OpenSSO 8.0 Update 2 の ZIP ファイルを解凍したあと、Java Fedlet および .NET Fedlet の両方が次のファイルから取得できます。
zip-root/opensso/fedlet/fedlet-unconfigured.zip。zip-root は、Oracle OpenSSO 8.0 Update 2 の ZIP ファイルを解凍した場所です。
Oracle OpenSSO 8.0 Update 2 をインストールしたあと、OpenSSO 8.0 管理コンソールで「Common Tasks」の下にある「Create Fedlet」ワークフローを使用して Java Fedlet を作成できます。
Fedlet には次の要件があります。
fedlet.war または、Fedlet と統合された Java サービスプロバイダアプリケーションを配備する場合は、Oracle OpenSSO 8.0 Update 2 がサポートする Web コンテナ。「OpenSSO 8.0 Update 2 のハードウェアおよびソフトウェア要件」を参照してください。
.NET Fedlet を配備する場合は、Microsoft Internet Information Server (IIS) 7.0 以降
JDK 1.6.x 以降
この節では、サービスプロバイダアプリケーションで Fedlet を最初に設定する方法を説明します。
Fedlet の初回設定が終わったあと、ほかに実施する設定があれば続けます。いくつかの留意点を次に示します。
Fedlet の sp.xml ファイルを編集する場合は、このファイルをアイデンティティープロバイダに再インポートする必要があります。
サービスプロバイダ側でほかの Fedlet 設定も変更する場合は、その情報をアイデンティティープロバイダの管理者に伝えて、アイデンティティープロバイダ側で必要な設定を変更できるようにします。
アイデンティティープロバイダ側で、アイデンティティープロバイダの XML メタデータを生成し、idp.xml という名前のファイルにそのメタデータを保存します。
Oracle OpenSSO 8.0 Update 2 の場合、exportmetadata.jsp を使用します。例:
http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
必要な場合は、サービスプロバイダ側で Fedlet の ZIP ファイルを解凍します。
Fedlet のホームディレクトリを作成します。Fedlet は、メタデータ、トラストサークル、設定プロパティーファイルをこのディレクトリから読み取ります。
デフォルトの場所は、Feldet の Web コンテナを実行しているユーザーのホームディレクトリ下にある Fedlet サブディレクトリです。この場所は user.home JVM プロパティーで示されています。たとえば、このホームディレクトリが /home/webservd の場合、Fedlet のホームディレクトリは次のようになります。
/home/webservd/fedlet
Fedlet のデフォルトホームディレクトリを変更するには、JVM ランタイム com.sun.identity.fedlet.home プロパティーの値を希望する場所に設定します。例:
-Dcom.sun.identity.fedlet.home=/export/fedlet/conf
このように変更すると、Fedlet はそのメタデータ、トラストサークル、設定ファイルを /export/fedlet/conf ディレクトリから読み取るようになります。
Java Fedlet の java/conf ディレクトリから次のファイルを Fedlet ホームディレクトリにコピーします。
sp.xml-template
sp-extended.xml-template
idp-extended.xml-template
fedlet.cot-template
Fedlet ホームディレクトリで、コピーしたファイルの名前を変更して、各ファイルの名前から -template を取り除きます。
Fedlet ホームディレクトリにコピーして名前を変更した各ファイルで、次の表に示すとおりにタグを置き換えます。
タグ |
置き換え後のタグ |
---|---|
FEDLET_COT |
リモートアイデンティティープロバイダおよび Java Fedlet サービスプロバイダアプリケーションがメンバーとなっているトラストサークル (COT) の名前。 |
FEDLET_ENTITY_ID |
Java Fedlet サービスプロバイダアプリケーションの ID (名前)。例: fedletsp |
FEDLET_PROTOCOL |
Java Fedlet サービスプロバイダアプリケーションの Web コンテナのプロトコル (fedlet.war など)。例: https |
FEDLET_HOST |
Java Fedlet サービスプロバイダアプリケーションの Web コンテナのホスト名 (fedlet.war など)。例: fedlet-host.example.com |
FEDLET_PORT |
Java Fedlet サービスプロバイダアプリケーションの Web コンテナのポート番号 (fedlet.war など)。例: 80 |
FEDLET_DEPLOY_URI |
Java Fedlet サービスプロバイダアプリケーションの URL。例: http://fedletsp.example.com/myFedletApp |
IDP_ENTITY_ID |
リモートアイデンティティープロバイダの ID (名前)。例: openssoidp |
注: Fedlet サービスプロバイダまたはアイデンティティープロバイダのエンティティ ID にパーセント記号 (%) またはコンマ (,) が含まれている場合は、fedlet.cot ファイル内で置き換える前にその文字をエスケープする必要があります。 たとえば、「%」を「%25」に、「,」を「%2C」に変更します。 |
Java Fedlet の java/conf ディレクトリから、FedletConfiguration.properties ファイルを Fedlet のホームディレクトリにコピーします。
アイデンティティープロバイダの標準メタデータ XML ファイル (手順 1 のもの) を Fedlet ホームディレクトリにコピーします。このファイルは idp.xml という名前にする必要があります。
Java Fedlet XML メタデータファイル (sp.xml) をアイデンティティープロバイダにインポートします。
Oracle OpenSSO 8.0 Update 2 の場合、OpenSSO 8.0 管理コンソールで「Common Tasks」の下にある「Register Remote Service Provider」ワークフローを使用して、Java Fedlet サービスプロバイダのメタデータをインポートしたり、Java Fedlet サービスプロバイダをトラストサークルに追加したりできます。
要件によっては、Java Fedlet のその他の設定を続けます。
アイデンティティープロバイダ側で、アイデンティティープロバイダの XML メタデータを生成し、idp.xml という名前のファイルにそのメタデータを保存します。
Oracle OpenSSO 8.0 Update 2 の場合、exportmetadata.jsp を使用します。次に例を示します。
http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
必要な場合は、サービスプロバイダ側で Fedlet の ZIP ファイルを解凍します。
.NET Fedlet の asp.net/conf フォルダから次のファイルをアプリケーションの App_Data フォルダにコピーします。
sp.xml-template
sp-extended.xml-template
idp-extended.xml-template
fedlet.cot-template
App_Data フォルダで、コピーしたファイルの名前を変更して、各ファイルの名前から -template を取り除きます。
App_Data フォルダにコピーして名前を変更した各ファイルで、次の表に示すとおりにタグを置き換えます。
タグ |
置き換え後のタグ |
---|---|
FEDLET_COT |
リモートアイデンティティープロバイダおよび .NET Fedlet サービスプロバイダアプリケーションがメンバーとなっているトラストサークル (COT) の名前。 |
FEDLET_ENTITY_ID |
.NET Fedlet サービスプロバイダアプリケーションの ID (名前)。例: fedletsp |
FEDLET_DEPLOY_URI |
.NET Fedlet サービスプロバイダアプリケーションの URL。例: http://fedletsp.example.com/myFedletApp |
IDP_ENTITY_ID |
リモートアイデンティティープロバイダの ID (名前)。例: openssoidp |
アイデンティティープロバイダの標準メタデータ XML ファイル (手順 1 のもの) をアプリケーションの App_Data フォルダにコピーします。このファイルは idp.xml という名前にする必要があります。
.NET Fedlet asp.net/bin フォルダの Fedlet.dll ファイルおよび Fedlet.dll.config ファイルを、アプリケーションの bin フォルダにコピーします。
.NET Fedlet XML メタデータファイル (sp.xml) をアイデンティティープロバイダにインポートします。
Oracle OpenSSO 8.0 Update 2 の場合、OpenSSO 8.0 管理コンソールで「Common Tasks」の下にある「Register Remote Service Provider」ワークフローを使用して、.NET Fedlet サービスプロバイダのメタデータをインポートしたり、Java Fedlet サービスプロバイダをトラストサークルに追加したりできます。
要件によっては、.NET Fedlet のその他の設定を続けます。
Oracle OpenSSO 8.0 Update 2 の Fedlet には、次の新機能が含まれています。
「.NET Fedlet による複数のアイデンティティープロバイダとディスカバリサービスのサポート (CR 6928524)」
「.NET Fedlet によるアイデンティティープロバイダのディスカバリサービスのサポート (CR 6928524)」
Oracle OpenSSO Fedlet にはバージョン情報が含まれます。Fedlet パッケージ (ZIP ファイル) 内のファイルを抽出したあと、次のいずれかのファイルを表示して Fedlet のバージョンを確認します。
Java Fedlet の場合: java/conf/FederationConfig.properties
.NET Fedlet の場合: asp.net/bin/Fedlet.dll.config
Java Fedlet は、storepass および keypass の各パスワードファイルを暗号化するための fedletEncode.jsp を fedlet.war ファイル内に提供しています。デフォルトでは、それぞれの Fedlet に異なる暗号化鍵が生成されます。この暗号化鍵を変更するには、Fedlet の FederationConfig.properties ファイルで am.encryption.pwd プロパティーを設定します。
Java Fedlet は XML 署名の検証と、暗号化された assertion と NameID 要素、さらにそれらの属性の復号化をサポートします。
keytool ユーティリティーを使用して、keystore.jks という名前のキーストアファイルを作成します。
署名に使用する非公開鍵 (該当する場合は公開証明書も) および暗号化に使用する非公開鍵 (該当する場合は公開証明書も) を、keystore.jks ファイルに追加します。
.storepass ファイルを作成します。
.storepass ファイルにパスワードを追加します。fedletEncode.jsp を使用してパスワードを暗号化します。
.keypass ファイルを作成します。
.keypass ファイルにパスワードを追加します。fedletEncode.jsp を使用してパスワードを暗号化します。
平文のパスワードを使用している場合は、FederationConfig.properties ファイル内で次の行をコメントアウトします。
com.sun.identity.saml.xmlsig.passwordDecoder= com.sun.identity.fedlet.FedletEncodeDecode
FederationConfig.properties ファイル内で次の属性への完全パスを設定します。path の部分は各ファイルへの絶対パスです。
com.sun.identity.saml.xmlsig.keystore=path/keystore.jks com.sun.identity.saml.xmlsig.storepass=path/.storepass com.sun.identity.saml.xmlsig.keypass=path/.keypass
keytool を使用して署名証明書をエクスポートします。次に例を示します。
keytool -export -keystore keystore.jks -rfc -alias test
このツールを実行すると、keystore.jks にアクセスするために使用するパスワードを入力するよう求められ、その後証明書が生成されます。
暗号化証明書が必要な場合は、前の手順で示すとおり、keytool を使用してエクスポートします。または、署名と暗号化の両方に同一の証明書を使用します。
KeyDescriptor XML ブロックを作成して、そこに暗号化証明書を追加します。たとえば、次のように KeyDescriptor 要素の use="signing" タグを記述します。
<KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <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> </KeyDescriptor>
別の KeyDescriptor XML ブロックを作成して、そこに暗号化証明書を追加します。たとえば、次のように KeyDescriptor 要素の use="encryption" タグを記述します。
<KeyDescriptor use="encryption"> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509Data> <X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </X509Certificate> </X509Data> </KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor>
Java Fedlet の sp.xml ファイルで、これらの署名証明書および暗号化証明書の各 XML ブロックを SPSSODescriptor 要素の下に追加します。サンプルの SPSSODescriptor 要素については、例 4–1を参照してください。
AuthnRequestsSigned 属性が true に設定され、Java Fedlet はすべての認証要求に署名するようになります。
Java Fedlet の sp-extended.xml ファイルで、次の要素の値を設定します。
signingCertAlias には、キーストアにある XML 署名証明書のエイリアスが含まれています。
encryptionCertAlias には、キーストアにある XML 暗号化証明書のエイリアスが含まれています。
Java Fedlet サービスプロバイダの暗号化内容を強化するには、sp-extended.xml ファイルで次の属性を true に設定します。
wantAssertionEncrypted
wantNameIDEncrypted
wantAttributeEncrypted
Java Fedlet サービスプロバイダの署名内容と署名対象を強化するには、次の属性を true に設定します。
idp.xml ファイルの wantAuthnRequestsSigned は、何に署名すべきかを Fedlet に伝えます。
sp.xml ファイルの AuthnRequestsSigned および WantAssertionsSigned は、Fedlet の署名対象をアイデンティティープロバイダに伝えます。
sp-extended.xml ファイルの wantArtifactResponseSigned は、何に署名すべきかを Fedlet に伝えます。
sp-extended.xml ファイルの wantPOSTResponseSigned
sp-extended.xml ファイルの wantLogoutRequestSigned
sp-extended.xml ファイルの wantLogoutResponseSigned
アイデンティティープロバイダが特定のメッセージに署名を必要とする場合、idp-extended.xml ファイルでそれぞれの属性を true に設定します。たとえば、wantLogoutRequestSigned や wantLogoutResponseSigned などです。
sp-extended.xml ファイルで属性を設定する場合は、その情報をアイデンティティープロバイダの管理者に伝えて、アイデンティティープロバイダ側で必要な設定を変更できるようにします。
Java Fedlet の Web コンテナを再起動します。
Java Fedlet の sp.xml ファイルをアイデンティティープロバイダにインポートします。
<EntityDescriptor entityID="fedlet" xmlns="urn:oasis:names:tc:SAML:2.0:metadata"> <SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <b><KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <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> </KeyDescriptor></b> <b><KeyDescriptor use="encryption"> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509Data> <X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </X509Certificate> </X509Data> </KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor></b> <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat ><AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://server.sun.com:7070/fedlet/fedletapplication"/> </SPSSODescriptor> </EntityDescriptor>
Java Fedlet は SAMLv2 の属性クエリーをサポートし、Oracle OpenSSO 8.0 Update 2 などのアイデンティティープロバイダに特定のアイデンティティー属性の値を問い合わせます。クエリーに署名をしたり、クエリーを暗号化したりするよう Fedlet を設定できます。Fedlet クエリーを発行するには署名が必要ですが、暗号化は任意です。
「Java Fedlet の署名および暗号化のサポート」の手順に従って、XML 署名を有効にして属性クエリーに署名します。
前の手順で生成した証明書を Fedlet の sp.xml ファイル内にある RoleDescriptor 要素に追加します。次の例では、ペーストした証明書の中に 2 つの KeyDescriptor タグがあります。1 つは署名用で、もう 1 つは暗号化用です。暗号化を有効にしていない場合、KeyDescriptor use="encryption" タグは不要です。
<RoleDescriptor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:query="urn:oasis:names:tc:SAML:metadata:ext:query" xsi:type="query:AttributeQueryDescriptorType" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> --certificate-- </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </KeyDescriptor> <KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> --certificate-- </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <xenc:KeySize xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">128</xenc:KeySize> </EncryptionMethod> </KeyDescriptor> </RoleDescriptor>
Java Fedlet の sp-extended.xml ファイルで、signingCertAlias 属性の値を指定して、設定している場合は encryptionCertAlias 属性の値も指定します。
アイデンティティープロバイダを設定して表明を暗号化する場合は、NameID 要素も暗号化します。したがって、wantNameIDEncrypted 属性の値を true に設定する必要があります。AttributeQueryConfig 要素に XML コードを追加します。次に例を示します。
<Attribute name="signingCertAlias"> <Value>test</Value> </Attribute> <Attribute name="encryptionCertAlias"> <Value>test</Value> </Attribute> <Attribute name="wantNameIDEncrypted"> <Value>true</Value> </Attribute>
この例では、test はサンプル鍵のエイリアスです。
Java Fedlet のメタデータファイル (sp.xml) をアイデンティティープロバイダにインポートします。
また、アイデンティティープロバイダで追加の設定手順を実行して Fedlet の属性クエリーをサポートします。
.NET Fedlet は、NameID、属性、および表明の要素に対して、送信する XML 要求を暗号化したり、受信する応答を復号化したりできます。
Micrsoft 管理コンソールの証明書スナップインを使用して、X.509 証明書をローカルコンピュータのアカウント内にある個人フォルダにインポートします。このスナップインを使用するには、次の Microsoft の記事を参照してください。
「プロパティー」ダイアログを表示して値を入力することで、この証明書にわかりやすい名前を指定します (この値は手順 4 で保存)。
前述の Microsoft の記事に従って、Internet Information Server (IIS) によって使用されるユーザーアカウントの証明書に対して読み取りアクセスができるよう適切な権限を設定します。次に例を示します。
.NET Fedlet の拡張メタデータファイル (sp-extended.xml) で、手順 2 で encryptionCertAlias 属性の値に指定したわかりやすい名前を指定します。次に例を示します。
<Attribute name="encryptionCertAlias"> <Value>MyFedlet</Value>
.NET Fedlet のサービスプロバイダのメタデータファイル (sp.xml ) で、暗号化鍵用の KeyDescriptor を追加します。
すでに使用した Microsoft 管理コンソールの証明書スナップインを使用して、KeyDescriptor XML ブロックに挿入する証明書の公開鍵を、Base64 エンコーディングでエクスポートします。この KeyDescriptor は、SPSSODescriptor 内の最初の子要素である必要があります。次に例を示します。
<KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <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> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor>
.NET アプリケーションに関連づけられたアプリケーションプールを再起動します。
この設定をテストするには、サンプルアプリケーションを使用します。また、設定したメタデータに適切な変更を加えて次の属性を設定することで、アイデンティティープロバイダとやりとりする要求を暗号化したり応答を復号化したりします。
表明: sp-extended.xml メタデータファイルの wantAssertionEncrypted 属性を true に設定して、アイデンティティープロバイダから送られてくる応答に含まれている EncryptedAssertion 要素を .NET Fedlet が復号化できるようにします。
属性: sp-extended.xml メタデータファイルの wantAssertionEncrypted 属性を true に設定して、アイデンティティープロバイダから送られてくる応答に含まれている EncryptedAttribute 要素を .NET Fedlet が復号化できるようにします。
NameID: idp-extended.xml メタデータファイルの wantNameIDEncrypted 属性を true に設定して、送信する要求の中にある NameID 要素を .NET Fedlet が暗号化できるようにします。sp-extended.xml で同じ属性を設定して、アイデンティティープロバイダから送られてくる応答の中の EncryptedID 要素を .NET Fedlet が復号化できるようにします。
.NET Fedlet は Authn 要求やログアウト要求など、送信する XML 要求の署名をサポートします。
Micrsoft 管理コンソールの証明書スナップインを使用して、X.509 証明書をローカルコンピュータのアカウント内にある個人フォルダにインポートします。このスナップインを使用するには、次の Microsoft の記事を参照してください。
「プロパティー」ダイアログを表示して値を入力することで、この証明書にわかりやすい名前を指定します (手順 4 でこの値を保存)。
前述の Microsoft の記事に従って、Internet Information Server (IIS) によって使用されるユーザーアカウントの証明書に対して読み取りアクセスができるよう適切な権限を設定します。例:
.NET Fedlet の拡張メタデータファイル (sp-extended.xml) で、手順 2 で signingCertAlias 属性の値に指定したわかりやすい名前を指定します。次に例を示します。
<Attribute name="signingCertAlias"> <Value>MyFedlet</Value>
.NET Fedlet のサービスプロバイダのメタデータファイル (sp.xml) で、署名鍵用の KeyDescriptor を追加します。
すでに使用した Microsoft 管理コンソールの証明書スナップインを使用して、KeyDescriptor XML ブロックに挿入する証明書の公開鍵を、Base64 エンコーディングでエクスポートします。この KeyDescriptor は、SPSSODescriptor 内の最初の子要素である必要があります。次に例を示します。
<KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <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> </KeyDescriptor>
.NET アプリケーションに関連づけられたアプリケーションプールを再起動します。
.NET Fedlet はアイデンティティープロバイダで開始されたシングルログアウトと、サービスプロバイダで開始されたシングルログアウトの両方をサポートします。シングルログアウトを実装するため、.NET Fedlet のサンプルアプリケーションには asp.net/SampleApp フォルダに logout.aspx ファイルおよび spinitiatedslo.aspx ファイルが含まれています。Fedlet のシングルログアウト機能のしくみを確認するには、.NET Fedlet サンプルアプリケーションを配備します。
.NET Fedlet をまだ設定していない場合は、Readme ファイルの手順に従います。
.NET アプリケーションのパブリックコンテンツ内にある logout.aspx ファイルおよび spinitiatedslo.aspx ファイルをコピーします。
アプリケーションの設定ファイルに次の変更を加えます。
sp.xml ファイル内で、logout.aspx ファイルへのパスが、アプリケーションで使用しているファイルの正しい場所を指定していることを確認します。
idp.xml ファイルで (またはアイデンティティープロバイダの設定中に) spinitiatedslo.aspx ファイルへのパスが、アプリケーションで使用しているファイルの正しい場所を指定していることを確認します。
ログアウト要求とログアウト応答に署名をする場合、sp-extended.xml ファイルおよび idp-extended.xml ファイルで、次の属性を true に設定します。
wantLogoutRequestSigned
wantLogoutResponseSigned
Fedlet サービスプロバイダのメタデータファイル (sp.xml) をアイデンティティープロバイダにインポートします。
アイデンティティープロバイダの管理者にも Fedlet サービスプロバイダのシングルログアウトを設定したことを伝えて、アイデンティティープロバイダ側で必要な追加の設定変更ができるようにします。
.NET Fedlet は SAMLv2 のサービスプロバイダが開始するシングルサインオン (SSO) をサポートします。さらに、.NET Fedlet がアーティファクトを受信したあとで、SOAP 経由でアイデンティティープロバイダのアーティファクト解決サービスを発行してアーティファクトを解決できるようにするため、アーティファクトのサポートが必要になります。
.NET Fedlet のサンプルアプリケーションは、シングルサインオンの設定方法を示しています。アプリケーションに必要なアーティファクトをインストールしたら、アイデンティティープロバイダによる認証成功後に SAMLv2 応答を含んだ HTTP POST を受信するために、特定の URI が必要になります。次のコーディング例は、.NET アプリケーションでこの情報を取得する方法を示しています。
AuthnResponse authnResponse = null; try { ServiceProviderUtility spu = new ServiceProviderUtility(Context); authnResponse = spu.GetAuthnResponse(Context); } catch (Saml2Exception se) { // invalid AuthnResponse received } catch (ServiceProviderUtilityException spue) { // issues with deployment (reading metadata) }
アプリケーションが SAMLv2 を受信したあと、authnResponse オブジェクトが表明情報とともに生成されます。サンプルアプリケーションでは、このオブジェクトから属性および被認証者の情報を取得する方法を示しています。
.NET Fedlet は、複数のアイデンティティープロバイダとアイデンティティープロバイダのディスカバリサービスをサポートします。
配備によっては、Oracle OpenSSO 8.0 Update 2 などの複数のアイデンティティープロバイダで .NET Fedlet を設定する場合があります。追加する各アイデンティティープロバイダに対して、次の作業を実行します。
追加のアイデンティティープロバイダから XML メタデータファイルを取得します。
追加のアイデンティティープロバイダのメタデータファイルを idp n.xml という名前にします。n は追加するアイデンティティープロバイダの番号です。たとえば、2 番目のアイデンティティープロバイダの場合は idp2.xml、3 番目の場合は idp3.xml という名前になります。この手順では、idp2.xml というファイル名にします。
手順 2 の idp2.xml ファイルをアプリケーションの App_Data フォルダにコピーします。
この新しいアイデンティティープロバイダを .NET Fedlet のトラストサークルに追加します。
新しいアイデンティティープロバイダを既存のトラストサークルに追加するには、次の手順に従います。
アプリケーションの App_Data フォルダにある fedlet.cot ファイルで、新しい IDP の エンティティ ID (idp2.xml メタデータファイルの entityID 属性で示される) を sun-fm-trusted-providers 属性の値に追加します。追加するときの区切り文字にはコンマ (,) を使用します。
新しいアイデンティティープロバイダを新しいトラストサークルに追加するには、次の手順に従います。
アプリケーションの App_Data フォルダに fedlet2.cot という名前の新しいファイルを作成します。既存の fedlet.cot をテンプレートとして使用して、cot-name 属性の値を新しいトラストサークルの名前 (cot2 など) に変更します。 新しいアイデンティティープロバイダのエンティティ ID と Fedlet のエンティティ ID の両方を、sun-fm-trusted-providers 属性の値として含めます。2 つのエンティティ ID はコンマ (,) で区切ります。
sp-extended.xml ファイルで、新しいトラストサークルの名前を cotlist 属性の値に追加します。たとえば、cot2 という名前のトラストサークルの場合、次のようになります。
<Attribute name="cotlist"> <Value>saml2cot</Value> <Value>cot2</Value> </Attribute>
アプリケーションの App_Data フォルダで、新しいアイデンティティーの拡張メタデータとして、idp2-extended.xml ファイルを新規作成します。既存の idp-extended.xml ファイルをテンプレートとして使用し、entityID を新しいアイデンティティープロバイダのエンティティ ID に変更します。アイデンティティープロバイダ用に新しいトラストサークルが作成されている場合は、cotlist 属性の値をそのトラストサークルの名前に変更します。追加のアイデンティティープロバイダがリモートアイデンティティーであることを確認します。
Fedlet .NET アプリケーションに関連づけられたアプリケーションプールを再起動します。
Fedlet メタデータ XMLファイル (sp.xml) を追加のアイデンティティープロバイダにインポートして、アイデンティティープロバイダのエンティティと同じトラストサークルに追加する必要があります。sp.xml ファイルをアイデンティティープロバイダにインポートするか、そのファイルをアイデンティティープロバイダの管理者に渡してインポートしてもらいます。
このシナリオでは、トラストサークル内の複数のアイデンティティープロバイダで .NET Fedlet が設定されているので、優先するアイデンティティープロバイダを決定するためにアイデンティティープロバイダのディスカバリサービスを使うよう Fedlet を設定します。
.NET Fedlet を使用して、ディスカバリサービスを使用中のアイデンティティープロバイダ用に設定する必要があります。Oracle OpenSSO 8.0 Update 2 でアイデンティティープロバイダのディスカバリサービスを設定するための情報については、次のドキュメントコレクションを参照してください: http://docs.sun.com/coll/1767.1。
.NET Fedlet の fedlet.cot ファイルで、sun-fm-saml2-readerservice-url プロパティーを SAMLv2 Reader Service URL に設定します。次に例を示します。
sun-fm-saml2-readerservice-url=http://discovery.common.com/opensso/saml2reader
.NET Fedlet アプリケーションに関連づけられたアプリケーションプールを再起動します。
作成予定
Fedlet の Java API リファレンスは、次のドキュメントコレクションの『Oracle OpenSSO Enterprise 8.0 Java API Reference』で利用可能です。http://docs.sun.com/coll/1767.1
getPolicyDecisionForFedlet メソッドは OpenSSO 8.0 Update 2 リリースではサポートされません。