Oracle OpenSSO Update 2 リリースノート

第 4 章 Oracle OpenSSO Fedlet の使用

この節では、Oracle OpenSSO Fedlet についての次の情報を記載しています。

Oracle OpenSSO Fedlet について

Oracle OpenSSO Fedlet は、Java または .NET のサービスプロバイダアプリケーションに配備できる計量なサービスプロバイダ (SP) 実装で、アプリケーションは SAMLv2 プロトコルを使用して Oracle OpenSSO 8.0 Update 2 などのアイデンティティープロバイダ (IDP) とやりとりできるようになります。Fedlet には、お使いのプラットフォームに合わせて 2 つのバージョンが用意されています。

Oracle OpenSSO 8.0 Update 2 では、次の Fedlet が利用できます。

Oracle OpenSSO Fedlet の要件

Fedlet には次の要件があります。

Oracle OpenSSO Fedlet の設定

この節では、サービスプロバイダアプリケーションで Fedlet を最初に設定する方法を説明します。

Fedlet の初回設定が終わったあと、ほかに実施する設定があれば続けます。いくつかの留意点を次に示します。

ProcedureJava Fedlet を設定する

  1. アイデンティティープロバイダ側で、アイデンティティープロバイダの XML メタデータを生成し、idp.xml という名前のファイルにそのメタデータを保存します。

    Oracle OpenSSO 8.0 Update 2 の場合、exportmetadata.jsp を使用します。例:

    http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
  2. 必要な場合は、サービスプロバイダ側で Fedlet の ZIP ファイルを解凍します。

  3. 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 ディレクトリから読み取るようになります。

  4. Java Fedlet の java/conf ディレクトリから次のファイルを Fedlet ホームディレクトリにコピーします。

    • sp.xml-template

    • sp-extended.xml-template

    • idp-extended.xml-template

    • fedlet.cot-template

  5. Fedlet ホームディレクトリで、コピーしたファイルの名前を変更して、各ファイルの名前から -template を取り除きます。

  6. 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」に変更します。

  7. Java Fedlet の java/conf ディレクトリから、FedletConfiguration.properties ファイルを Fedlet のホームディレクトリにコピーします。

  8. アイデンティティープロバイダの標準メタデータ XML ファイル (手順 1 のもの) を Fedlet ホームディレクトリにコピーします。このファイルは idp.xml という名前にする必要があります。

  9. 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 のその他の設定を続けます。

Procedure.NET Fedlet を設定する

  1. アイデンティティープロバイダ側で、アイデンティティープロバイダの XML メタデータを生成し、idp.xml という名前のファイルにそのメタデータを保存します。

    Oracle OpenSSO 8.0 Update 2 の場合、exportmetadata.jsp を使用します。次に例を示します。

    http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
  2. 必要な場合は、サービスプロバイダ側で Fedlet の ZIP ファイルを解凍します。

  3. .NET Fedlet の asp.net/conf フォルダから次のファイルをアプリケーションの App_Data フォルダにコピーします。

    • sp.xml-template

    • sp-extended.xml-template

    • idp-extended.xml-template

    • fedlet.cot-template

  4. App_Data フォルダで、コピーしたファイルの名前を変更して、各ファイルの名前から -template を取り除きます。

  5. 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

  6. アイデンティティープロバイダの標準メタデータ XML ファイル (手順 1 のもの) をアプリケーションの App_Data フォルダにコピーします。このファイルは idp.xml という名前にする必要があります。

  7. .NET Fedlet asp.net/bin フォルダの Fedlet.dll ファイルおよび Fedlet.dll.config ファイルを、アプリケーションの bin フォルダにコピーします。

  8. .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 のその他の設定を続けます。

OpenSSO 8.0 Update 2 の Fedlet の新機能

Oracle OpenSSO 8.0 Update 2 の Fedlet には、次の新機能が含まれています。

Fedlet のバージョン情報 (CR 6941387)

Oracle OpenSSO Fedlet にはバージョン情報が含まれます。Fedlet パッケージ (ZIP ファイル) 内のファイルを抽出したあと、次のいずれかのファイルを表示して Fedlet のバージョンを確認します。

Java Fedlet パスワードの暗号化および復号化 (CR 6930477)

Java Fedlet は、storepass および keypass の各パスワードファイルを暗号化するための fedletEncode.jspfedlet.war ファイル内に提供しています。デフォルトでは、それぞれの Fedlet に異なる暗号化鍵が生成されます。この暗号化鍵を変更するには、Fedlet の FederationConfig.properties ファイルで am.encryption.pwd プロパティーを設定します。

Java Fedlet の署名および暗号化のサポート

Java Fedlet は XML 署名の検証と、暗号化された assertionNameID 要素、さらにそれらの属性の復号化をサポートします。

ProcedureJava Fedlet で署名および暗号化を設定する

  1. keytool ユーティリティーを使用して、keystore.jks という名前のキーストアファイルを作成します。

  2. 署名に使用する非公開鍵 (該当する場合は公開証明書も) および暗号化に使用する非公開鍵 (該当する場合は公開証明書も) を、keystore.jks ファイルに追加します。

  3. .storepass ファイルを作成します。

  4. .storepass ファイルにパスワードを追加します。fedletEncode.jsp を使用してパスワードを暗号化します。

  5. .keypass ファイルを作成します。

  6. .keypass ファイルにパスワードを追加します。fedletEncode.jsp を使用してパスワードを暗号化します。

  7. 平文のパスワードを使用している場合は、FederationConfig.properties ファイル内で次の行をコメントアウトします。

    com.sun.identity.saml.xmlsig.passwordDecoder=
        com.sun.identity.fedlet.FedletEncodeDecode
  8. 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
  9. keytool を使用して署名証明書をエクスポートします。次に例を示します。

    keytool -export -keystore keystore.jks -rfc -alias test

    このツールを実行すると、keystore.jks にアクセスするために使用するパスワードを入力するよう求められ、その後証明書が生成されます。

  10. 暗号化証明書が必要な場合は、前の手順で示すとおり、keytool を使用してエクスポートします。または、署名と暗号化の両方に同一の証明書を使用します。

  11. 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>
  12. 別の 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>
  13. Java Fedlet の sp.xml ファイルで、これらの署名証明書および暗号化証明書の各 XML ブロックを SPSSODescriptor 要素の下に追加します。サンプルの SPSSODescriptor 要素については、例 4–1を参照してください。

    AuthnRequestsSigned 属性が true に設定され、Java Fedlet はすべての認証要求に署名するようになります。

  14. Java Fedlet の sp-extended.xml ファイルで、次の要素の値を設定します。

    • signingCertAlias には、キーストアにある XML 署名証明書のエイリアスが含まれています。

    • encryptionCertAlias には、キーストアにある XML 暗号化証明書のエイリアスが含まれています。

  15. Java Fedlet サービスプロバイダの暗号化内容を強化するには、sp-extended.xml ファイルで次の属性を true に設定します。

    • wantAssertionEncrypted

    • wantNameIDEncrypted

    • wantAttributeEncrypted

  16. 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 に設定します。たとえば、wantLogoutRequestSignedwantLogoutResponseSigned などです。


    注 –

    sp-extended.xml ファイルで属性を設定する場合は、その情報をアイデンティティープロバイダの管理者に伝えて、アイデンティティープロバイダ側で必要な設定を変更できるようにします。


  17. Java Fedlet の Web コンテナを再起動します。

  18. Java Fedlet の sp.xml ファイルをアイデンティティープロバイダにインポートします。


例 4–1 Java Fedlet のサンプル SPSSODescriptor 要素

<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 の属性クエリーのサポート (CR 6930476)

Java Fedlet は SAMLv2 の属性クエリーをサポートし、Oracle OpenSSO 8.0 Update 2 などのアイデンティティープロバイダに特定のアイデンティティー属性の値を問い合わせます。クエリーに署名をしたり、クエリーを暗号化したりするよう Fedlet を設定できます。Fedlet クエリーを発行するには署名が必要ですが、暗号化は任意です。

ProcedureJava Fedlet で属性クエリーを設定する

  1. 「Java Fedlet の署名および暗号化のサポート」の手順に従って、XML 署名を有効にして属性クエリーに署名します。

  2. 前の手順で生成した証明書を 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>
  3. 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 はサンプル鍵のエイリアスです。

  4. Java Fedlet のメタデータファイル (sp.xml) をアイデンティティープロバイダにインポートします。

    また、アイデンティティープロバイダで追加の設定手順を実行して Fedlet の属性クエリーをサポートします。

.NET Fedlet での要求の暗号化および応答の復号化 (CR 6939005)

.NET Fedlet は、NameID、属性、および表明の要素に対して、送信する XML 要求を暗号化したり、受信する応答を復号化したりできます。

Procedure.NET Fedlet を設定して要求を暗号化および応答を復号化する

  1. Micrsoft 管理コンソールの証明書スナップインを使用して、X.509 証明書をローカルコンピュータのアカウント内にある個人フォルダにインポートします。このスナップインを使用するには、次の Microsoft の記事を参照してください。

    http://msdn.microsoft.com/en-us/library/ms788967.aspx

  2. 「プロパティー」ダイアログを表示して値を入力することで、この証明書にわかりやすい名前を指定します (この値は手順 4 で保存)。

  3. 前述の Microsoft の記事に従って、Internet Information Server (IIS) によって使用されるユーザーアカウントの証明書に対して読み取りアクセスができるよう適切な権限を設定します。次に例を示します。

    1. 証明書スナップインで、「Action」、「All Tasks」、「Manage Private Keys」の順に選択します。

    2. IIS を実行しているユーザーアカウント (通常は NETWORK SERVICE) に「Allow Read」のアクセス権を指定します。

  4. .NET Fedlet の拡張メタデータファイル (sp-extended.xml) で、手順 2 で encryptionCertAlias 属性の値に指定したわかりやすい名前を指定します。次に例を示します。

    <Attribute name="encryptionCertAlias">
    <Value>MyFedlet</Value>
  5. .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>
  6. .NET アプリケーションに関連づけられたアプリケーションプールを再起動します。

次の手順

この設定をテストするには、サンプルアプリケーションを使用します。また、設定したメタデータに適切な変更を加えて次の属性を設定することで、アイデンティティープロバイダとやりとりする要求を暗号化したり応答を復号化したりします。

.NET Fedlet の要求および応答の署名 (CR 6928530)

.NET Fedlet は Authn 要求やログアウト要求など、送信する XML 要求の署名をサポートします。

Procedure.NET Fedlet が要求および応答に署名するよう設定するには、次の手順に従います。

  1. Micrsoft 管理コンソールの証明書スナップインを使用して、X.509 証明書をローカルコンピュータのアカウント内にある個人フォルダにインポートします。このスナップインを使用するには、次の Microsoft の記事を参照してください。

    http://msdn.microsoft.com/en-us/library/ms788967.aspx

  2. 「プロパティー」ダイアログを表示して値を入力することで、この証明書にわかりやすい名前を指定します (手順 4 でこの値を保存)。

  3. 前述の Microsoft の記事に従って、Internet Information Server (IIS) によって使用されるユーザーアカウントの証明書に対して読み取りアクセスができるよう適切な権限を設定します。例:

    1. 証明書スナップインで、「Action」、「All Tasks」、「Manage Private Keys」の順に選択します。

    2. IIS を実行しているユーザーアカウント (通常は NETWORK SERVICE) に「Allow Read」のアクセス権を指定します。

  4. .NET Fedlet の拡張メタデータファイル (sp-extended.xml) で、手順 2 で signingCertAlias 属性の値に指定したわかりやすい名前を指定します。次に例を示します。

    <Attribute name="signingCertAlias">
    <Value>MyFedlet</Value>
  5. .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>
  6. .NET アプリケーションに関連づけられたアプリケーションプールを再起動します。

.NET Fedlet のシングルログアウト (CR 6928528 および CR 6930472)

.NET Fedlet はアイデンティティープロバイダで開始されたシングルログアウトと、サービスプロバイダで開始されたシングルログアウトの両方をサポートします。シングルログアウトを実装するため、.NET Fedlet のサンプルアプリケーションには asp.net/SampleApp フォルダに logout.aspx ファイルおよび spinitiatedslo.aspx ファイルが含まれています。Fedlet のシングルログアウト機能のしくみを確認するには、.NET Fedlet サンプルアプリケーションを配備します。

Procedure.NET Fedlet サービスプロバイダアプリケーションでシングルログアウトを設定するには、次の手順に従います。

  1. .NET Fedlet をまだ設定していない場合は、Readme ファイルの手順に従います。

  2. .NET アプリケーションのパブリックコンテンツ内にある logout.aspx ファイルおよび spinitiatedslo.aspx ファイルをコピーします。

  3. アプリケーションの設定ファイルに次の変更を加えます。

    • sp.xml ファイル内で、logout.aspx ファイルへのパスが、アプリケーションで使用しているファイルの正しい場所を指定していることを確認します。

    • idp.xml ファイルで (またはアイデンティティープロバイダの設定中に) spinitiatedslo.aspx ファイルへのパスが、アプリケーションで使用しているファイルの正しい場所を指定していることを確認します。

  4. ログアウト要求とログアウト応答に署名をする場合、sp-extended.xml ファイルおよび idp-extended.xml ファイルで、次の属性を true に設定します。

    • wantLogoutRequestSigned

    • wantLogoutResponseSigned

  5. Fedlet サービスプロバイダのメタデータファイル (sp.xml) をアイデンティティープロバイダにインポートします。

    アイデンティティープロバイダの管理者にも Fedlet サービスプロバイダのシングルログアウトを設定したことを伝えて、アイデンティティープロバイダ側で必要な追加の設定変更ができるようにします。

.NET Fedlet サービスプロバイダ開始のシングルサインオン (CR 6928525)

.NET Fedlet は SAMLv2 のサービスプロバイダが開始するシングルサインオン (SSO) をサポートします。さらに、.NET Fedlet がアーティファクトを受信したあとで、SOAP 経由でアイデンティティープロバイダのアーティファクト解決サービスを発行してアーティファクトを解決できるようにするため、アーティファクトのサポートが必要になります。

.NET Fedlet のサンプルアプリケーションは、シングルサインオンの設定方法を示しています。アプリケーションに必要なアーティファクトをインストールしたら、アイデンティティープロバイダによる認証成功後に SAMLv2 応答を含んだ HTTP POST を受信するために、特定の URI が必要になります。次のコーディング例は、.NET アプリケーションでこの情報を取得する方法を示しています。


例 4–2 .NET Fedlet アプリケーションで AuthnResponse を取得するコーディング例

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 による複数のアイデンティティープロバイダとディスカバリサービスのサポート (CR 6928524)

.NET Fedlet は、複数のアイデンティティープロバイダとアイデンティティープロバイダのディスカバリサービスをサポートします。

配備によっては、Oracle OpenSSO 8.0 Update 2 などの複数のアイデンティティープロバイダで .NET Fedlet を設定する場合があります。追加する各アイデンティティープロバイダに対して、次の作業を実行します。

Procedure複数のアイデンティティープロバイダ用に .NET Fedlet を設定する

  1. 追加のアイデンティティープロバイダから XML メタデータファイルを取得します。

  2. 追加のアイデンティティープロバイダのメタデータファイルを idp n.xml という名前にします。n は追加するアイデンティティープロバイダの番号です。たとえば、2 番目のアイデンティティープロバイダの場合は idp2.xml、3 番目の場合は idp3.xml という名前になります。この手順では、idp2.xml というファイル名にします。

  3. 手順 2 の idp2.xml ファイルをアプリケーションの App_Data フォルダにコピーします。

  4. この新しいアイデンティティープロバイダを .NET Fedlet のトラストサークルに追加します。

    新しいアイデンティティープロバイダを既存のトラストサークルに追加するには、次の手順に従います。

    アプリケーションの App_Data フォルダにある fedlet.cot ファイルで、新しい IDP の エンティティ ID (idp2.xml メタデータファイルの entityID 属性で示される) を sun-fm-trusted-providers 属性の値に追加します。追加するときの区切り文字にはコンマ (,) を使用します。

    新しいアイデンティティープロバイダを新しいトラストサークルに追加するには、次の手順に従います。

    1. アプリケーションの App_Data フォルダに fedlet2.cot という名前の新しいファイルを作成します。既存の fedlet.cot をテンプレートとして使用して、cot-name 属性の値を新しいトラストサークルの名前 (cot2 など) に変更します。 新しいアイデンティティープロバイダのエンティティ ID と Fedlet のエンティティ ID の両方を、sun-fm-trusted-providers 属性の値として含めます。2 つのエンティティ ID はコンマ (,) で区切ります。

    2. sp-extended.xml ファイルで、新しいトラストサークルの名前を cotlist 属性の値に追加します。たとえば、cot2 という名前のトラストサークルの場合、次のようになります。

      <Attribute name="cotlist">
      <Value>saml2cot</Value>
      <Value>cot2</Value>
      </Attribute>
  5. アプリケーションの App_Data フォルダで、新しいアイデンティティーの拡張メタデータとして、idp2-extended.xml ファイルを新規作成します。既存の idp-extended.xml ファイルをテンプレートとして使用し、entityID を新しいアイデンティティープロバイダのエンティティ ID に変更します。アイデンティティープロバイダ用に新しいトラストサークルが作成されている場合は、cotlist 属性の値をそのトラストサークルの名前に変更します。追加のアイデンティティープロバイダがリモートアイデンティティーであることを確認します。

  6. Fedlet .NET アプリケーションに関連づけられたアプリケーションプールを再起動します。

  7. Fedlet メタデータ XMLファイル (sp.xml) を追加のアイデンティティープロバイダにインポートして、アイデンティティープロバイダのエンティティと同じトラストサークルに追加する必要があります。sp.xml ファイルをアイデンティティープロバイダにインポートするか、そのファイルをアイデンティティープロバイダの管理者に渡してインポートしてもらいます。

.NET Fedlet によるアイデンティティープロバイダのディスカバリサービスのサポート (CR 6928524)

このシナリオでは、トラストサークル内の複数のアイデンティティープロバイダで .NET Fedlet が設定されているので、優先するアイデンティティープロバイダを決定するためにアイデンティティープロバイダのディスカバリサービスを使うよう Fedlet を設定します。

.NET Fedlet を使用して、ディスカバリサービスを使用中のアイデンティティープロバイダ用に設定する必要があります。Oracle OpenSSO 8.0 Update 2 でアイデンティティープロバイダのディスカバリサービスを設定するための情報については、次のドキュメントコレクションを参照してください: http://docs.sun.com/coll/1767.1

Procedure.NET Fedlet を設定してアイデンティティープロバイダのディスカバリサービスを使用するには、次の手順に従います。

  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
  2. .NET Fedlet アプリケーションに関連づけられたアプリケーションプールを再起動します。

Oracle OpenSSO 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 リリースではサポートされません。