Oracle OpenSSO Update 2 版本說明

第 4 章 使用 Oracle OpenSSO Fedlet

本節提供關於 Oracle OpenSSO Fedlet 的以下資訊:

關於 Oracle OpenSSO Fedlet

Oracle OpenSSO Fedlet 是一個輕量型服務提供者 (SP) 實作,可隨 Java 或 .NET 服務提供者應用程式一起部署,讓該應用程式可以使用 SAMLv2 協定與 Oracle OpenSSO 8.0 Update 2 等識別提供者 (IDP) 進行通訊。Fedlet 有兩個版本,可根據您的平台進行選擇:

在 Oracle OpenSSO 8.0 Update 2 中,Fedlet 按以下方式提供:

Oracle OpenSSO Fedlet 的需求

Fedlet 需要以下項目:

Oracle OpenSSO Fedlet 配置

本節介紹如何透過服務提供者應用程式對 Fedlet 進行初始配置:

完成 Fedlet 的初始配置後,請繼續執行您需要的任何其他配置。下面是幾條注意事項:

Procedure配置 Java 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 於其中讀取它的中介資料、信任圈及配置特性檔案的目錄。

    預設位置是執行 Fedlet Web 容器的使用者的主目錄 (由 user.home JVM 特性指示) 下的 Fedlet 子目錄。例如,如果該主目錄為 /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 服務提供者應用程式 (例如 fedlet.war) Web 容器的協定。例如:https

    FEDLET_HOST

    Java Fedlet 服務提供者應用程式 (例如 fedlet.war) Web 容器的主機名稱。例如:fedlet-host.example.com

    FEDLET_PORT

    Java Fedlet 服務提供者應用程式 (例如 fedlet.war) Web 容器的連接埠號碼。例如:80

    FEDLET_DEPLOY_URI

    Java Fedlet 服務提供者應用程式的 URL。例如:http://fedletsp.example.com/myFedletApp

    IDP_ENTITY_ID

    遠端識別提供者的 ID (名稱)。例如:openssoidp

    備註:如果 Fedlet 服務提供者或識別提供者實體 ID 包含百分號 (%) 或逗號 (,),則必須先對這些字元進行換碼,然後才能在 fedlet.cot 檔案中替代它。例如,將「%」變更為「%25」,將「,」變更為「%2C」。

  7. FedletConfiguration.properties 檔案從 Java Fedlet java/conf 目錄複製到 Fedlet 主目錄。

  8. 將識別提供者標準中介資料 XML 檔案 (在步驟 1 中產生) 複製到 Fedlet 主目錄。此檔案必須命名為 idp.xml

  9. 將 Java Fedlet XML 中介資料檔案 (sp.xml) 匯入識別提供者。

    對於 Oracle OpenSSO 8.0 Update 2,請在 OpenSSO 8.0 管理主控台中,使用 [共用作業] 下的 [註冊遠端服務提供者] 工作流程匯入 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. Fedlet.dllFedlet.dll.config 檔案從 .NET Fedlet asp.net/bin 資料夾複製到應用程式的 bin 資料夾中。

  8. 將 .NET Fedlet XML 中介資料檔案 (sp.xml) 匯入識別提供者。

    對於 Oracle OpenSSO 8.0 Update 2,請在 OpenSSO 8.0 管理主控台中,使用 [共用作業] 下的 [註冊遠端服務提供者] 工作流程匯入 .NET Fedlet 服務提供者中介資料,並將 .NET 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 在 fedlet.war 檔案中提供了 fedletEncode.jsp,以加密 storepasskeypass 密碼。依預設,將為各 Fedlet 產生不同的加密金鑰。若要變更此加密金鑰,請設定 Fedlet FederationConfig.properties 檔案中的 am.encryption.pwd 特性。

Java Fedlet 簽名和加密支援

Java Fedlet 支援 XML 簽名驗證和解密已加密的 assertionNameID 元素及其相應屬性。

Procedure配置 Java 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 檔案中的 AuthnRequestsSignedWantAssertionsSigned 告訴識別提供者 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 查詢是必需的,而加密是可選的。

Procedure配置 Java Fedlet 以支援屬性查詢的步驟:

  1. 啟用 XML 簽名以簽署屬性查詢,如Java Fedlet 簽名和加密支援中所述。

  2. 將於先前步驟中產生的憑證增加到 Fedlet sp.xml 檔案中的 RoleDescriptor 元素中。在以下範例中,有兩個供您在其中貼上憑證的 KeyDescriptor 標記。一個用於簽名,另一個用於加密。如果不啟用加密,則不需要 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。將 XML 代碼增加到 AttributeQueryConfig 元素中。例如:

    <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 可以加密外寄 XML 請求和解密針對 NameID、Attribute 和 Assertion 元素的內送回應。

Procedure配置 .NET Fedlet 以加密和解密請求和回應的步驟:

  1. 使用 Microsoft Management Console 的憑證嵌入式管理單元將您的 X.509 憑證匯入本機電腦帳號內的個人資料夾中。若要使用此嵌入式管理單元,請參閱以下 Microsoft 文章:

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

  2. 透過檢視 [特性] 對話方塊並輸入值,為此憑證指定一個友好的名稱。(儲存此值以在步驟 4 中使用。)

  3. 為 Internet Information Server (IIS) 使用的使用者帳號設定相應的權限,以允許其讀取該憑證,如 Microsoft 文章中所述。例如:

    1. 在憑證嵌入式管理單元中,瀏覽至 [Action] (動作) > [All Tasks] (所有作業) > [Manage Private Keys] (管理私密金鑰)。

    2. 為執行 IIS 的使用者帳號 (通常為 NETWORK SERVICE) 指定「允許讀取」權限。

  4. 在 .NET Fedlet 的擴展中介資料檔案 (sp-extended.xml) 中,指定在步驟 2 中指定的友好名稱作為 encryptionCertAlias 屬性的值。例如:

    <Attribute name="encryptionCertAlias">
    <Value>MyFedlet</Value>
  5. 在 .NET Fedlet 的服務提供者中介資料檔案 (sp.xml) 中,增加用於加密金鑰的 KeyDescriptor

    使用先前使用過的 Microsoft Management Console 憑證嵌入式管理單元匯出要包括在 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 支援簽署外寄 XML 請求 (例如 Authn 請求) 和登出請求。

Procedure配置 .NET Fedlet 以簽署請求和回應的步驟:

  1. 使用 Microsoft Management Console 的憑證嵌入式管理單元將您的 X.509 憑證匯入本機電腦帳號內的個人資料夾中。若要使用此嵌入式管理單元,請參閱以下 Microsoft 文章:

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

  2. 透過檢視 [特性] 對話方塊並輸入值,為此憑證指定一個友好的名稱。(儲存此值以在步驟 4 中使用。)

  3. 為 Internet Information Server (IIS) 使用的使用者帳號設定相應的權限,以允許其讀取該憑證,如 Microsoft 文章中所述。例如:

    1. 在憑證嵌入式管理單元中,瀏覽至 [Action] (動作) > [All Tasks] (所有作業) > [Manage Private Keys] (管理私密金鑰)。

    2. 為執行 IIS 的使用者帳號 (通常為 NETWORK SERVICE) 指定「允許讀取」權限。

  4. 在 .NET Fedlet 的擴展中介資料檔案 (sp-extended.xml) 中,指定在步驟 2 中指定的友好名稱作為 signingCertAlias 屬性的值。例如:

    <Attribute name="signingCertAlias">
    <Value>MyFedlet</Value>
  5. 在 .NET Fedlet 的服務提供者中介資料檔案 (sp.xml) 中,增加用於簽署金鑰的 KeyDescriptor

    使用先前使用過的 Microsoft Management Console 憑證嵌入式管理單元匯出要包括在 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 範例應用程式將 logout.aspxspinitiatedslo.aspx 檔案包括在 asp.net/SampleApp 資料夾中。若要瞭解 Fedlet 單次登出功能如何工作,請部署 .NET Fedlet 範例應用程式。

Procedure配置 .NET Fedlet 服務提供者應用程式單次登出的步驟:

  1. 如果您尚未配置 .NET Fedlet,請依照 Readme 檔案中說明的步驟進行作業。

  2. logout.aspxspinitiatedslo.aspx 檔案複製到您的 .NET 應用程式的公共內容中。

  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 範例應用程式顯示了配置單次登入的方式。為應用程式安裝必要的小工具後,需要提供特定的 URI,以在識別提供者成功進行認證後接收包含 SAMLv2 回應的 HTTP POST。以下代碼範例顯示如何在 .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 支援多個識別提供者和識別提供者探索服務。

在某些部署中,您可能需要為 .NET Fedlet 配置多個識別提供者 (如 Oracle OpenSSO 8.0 Update 2)。針對您要增加的每個附加識別提供者執行如下作業。

Procedure配置 .NET Fedlet 以支援多個識別提供者的步驟:

  1. 取得附加識別提供者的 XML 中介資料檔案。

  2. 將附加識別提供者的中介資料檔案命名為 idpn.xml,此處的 n 是您正在增加的識別提供者。例如,將第二個識別提供者檔案命名為 idp2.xml,將第三個識別提供者檔案命名為 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 屬性的值,使用逗號 (,) 分隔這兩個實體 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 讀取器服務 URL。例如:

    sun-fm-saml2-readerservice-url=http://discovery.common.com/opensso/saml2reader
  2. 重新啟動與您的 .NET Fedlet 應用程式關聯的應用程式集區。

關於 Oracle OpenSSO Fedlet 的一般問題和解決方法

待編寫

文件勘誤表

Fedlet Java API 參照在 Oracle OpenSSO 8.0 Update 2 Java API 參照中提供,Oracle OpenSSO 8.0 Update 2 Java API 參照包含在以下文件集合中:http://docs.sun.com/coll/1767.1


備註 –

在 OpenSSO 8.0 Update 2 發行版本中,不支援 getPolicyDecisionForFedlet 方法。