本節提供關於 Oracle OpenSSO Fedlet 的以下資訊:
Oracle OpenSSO Fedlet 是一個輕量型服務提供者 (SP) 實作,可隨 Java 或 .NET 服務提供者應用程式一起部署,讓該應用程式可以使用 SAMLv2 協定與 Oracle OpenSSO 8.0 Update 2 等識別提供者 (IDP) 進行通訊。Fedlet 有兩個版本,可根據您的平台進行選擇:
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 按以下方式提供:
解壓縮 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 後,可以使用 [共用作業] 下面的 [建立 Fedlet] 工作流程在 OpenSSO 8.0 管理主控台中建立 Java Fedlet。
Fedlet 需要以下項目:
Oracle OpenSSO 8.0 Update 2 支援的 Web 容器 (如果您打算部署 fedlet.war) 或與 Fedlet 整合在一起的 Java 服務提供者應用程式。請參閱OpenSSO 8.0 Update 2 的硬體和軟體需求。
Microsoft Internet Information Server (IIS) 7.0 及更高版本 (如果您打算部署 .NET Fedlet)
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 於其中讀取它的中介資料、信任圈及配置特性檔案的目錄。
預設位置是執行 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 目錄中讀取它的中介資料、信任圈及配置檔案。
將以下檔案從 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 服務提供者應用程式 (例如 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」。 |
將 FedletConfiguration.properties 檔案從 Java Fedlet java/conf 目錄複製到 Fedlet 主目錄。
將識別提供者標準中介資料 XML 檔案 (在步驟 1 中產生) 複製到 Fedlet 主目錄。此檔案必須命名為 idp.xml。
將 Java Fedlet XML 中介資料檔案 (sp.xml) 匯入識別提供者。
對於 Oracle OpenSSO 8.0 Update 2,請在 OpenSSO 8.0 管理主控台中,使用 [共用作業] 下的 [註冊遠端服務提供者] 工作流程匯入 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。
將 Fedlet.dll 和 Fedlet.dll.config 檔案從 .NET Fedlet asp.net/bin 資料夾複製到應用程式的 bin 資料夾中。
將 .NET Fedlet XML 中介資料檔案 (sp.xml) 匯入識別提供者。
對於 Oracle OpenSSO 8.0 Update 2,請在 OpenSSO 8.0 管理主控台中,使用 [共用作業] 下的 [註冊遠端服務提供者] 工作流程匯入 .NET Fedlet 服務提供者中介資料,並將 .NET Fedlet 服務提供者增加到信任圈中。
根據您的需求,繼續對 .NET Fedlet 進行其他配置。
Oracle OpenSSO 8.0 Update 2 中提供了有關 Fedlet 的以下新功能:
Oracle OpenSSO Fedlet 包括版本資訊。擷取 Fedlet 套裝軟體 (ZIP 檔案) 中的檔案之後,檢視下列檔案之一可確定 Fedlet 的版本:
Java Fedlet:java/conf/FederationConfig.properties
.NET Fedlet:asp.net/bin/Fedlet.dll.config
Java Fedlet 在 fedlet.war 檔案中提供了 fedletEncode.jsp,以加密 storepass 和 keypass 密碼。依預設,將為各 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 查詢是必需的,而加密是可選的。
啟用 XML 簽名以簽署屬性查詢,如Java Fedlet 簽名和加密支援中所述。
將於先前步驟中產生的憑證增加到 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>
在 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 是範例金鑰的別名。
將 Java Fedlet 中介資料檔案 (sp.xml) 匯入識別提供者。
此外,在識別提供者中執行其他配置步驟,以支援 Fedlet 屬性查詢。
.NET Fedlet 可以加密外寄 XML 請求和解密針對 NameID、Attribute 和 Assertion 元素的內送回應。
使用 Microsoft Management Console 的憑證嵌入式管理單元將您的 X.509 憑證匯入本機電腦帳號內的個人資料夾中。若要使用此嵌入式管理單元,請參閱以下 Microsoft 文章:
透過檢視 [特性] 對話方塊並輸入值,為此憑證指定一個友好的名稱。(儲存此值以在步驟 4 中使用。)
為 Internet Information Server (IIS) 使用的使用者帳號設定相應的權限,以允許其讀取該憑證,如 Microsoft 文章中所述。例如:
在 .NET Fedlet 的擴展中介資料檔案 (sp-extended.xml) 中,指定在步驟 2 中指定的友好名稱作為 encryptionCertAlias 屬性的值。例如:
<Attribute name="encryptionCertAlias"> <Value>MyFedlet</Value>
在 .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>
重新啟動與您的 .NET 應用程式關聯的應用程式集區。
若要測試此配置,請使用範例應用程式。此外,請設定以下屬性以加密請求和解密來自包含所配置中介資料的適當變更的識別提供者的回應:
Assertion:將 sp-extended.xml 中介資料檔案中的 wantAssertionEncrypted 屬性設定為 true,以讓 .NET Fedlet 解密來自識別提供者的內送回應中的 EncryptedAssertion 元素。
Attribute:將 sp-extended.xml 中介資料檔案中的 wantAssertionEncrypted 屬性設定為 true,以讓 .NET Fedlet 解密來自識別提供者的內送回應中的 EncryptedAssertion 元素。
NameID:將idp-extended.xml 中介資料檔案中的 wantNameIDEncrypted 屬性設定為 true,以讓 .NET Fedlet 加密外寄請求中的 NameID 元素。在 sp-extended.xml 中設定這一屬性,以讓 .NET Fedlet 解密來自識別提供者的內送回應中的 EncryptedID 元素。
.NET Fedlet 支援簽署外寄 XML 請求 (例如 Authn 請求) 和登出請求。
使用 Microsoft Management Console 的憑證嵌入式管理單元將您的 X.509 憑證匯入本機電腦帳號內的個人資料夾中。若要使用此嵌入式管理單元,請參閱以下 Microsoft 文章:
透過檢視 [特性] 對話方塊並輸入值,為此憑證指定一個友好的名稱。(儲存此值以在步驟 4 中使用。)
為 Internet Information Server (IIS) 使用的使用者帳號設定相應的權限,以允許其讀取該憑證,如 Microsoft 文章中所述。例如:
在 .NET Fedlet 的擴展中介資料檔案 (sp-extended.xml) 中,指定在步驟 2 中指定的友好名稱作為 signingCertAlias 屬性的值。例如:
<Attribute name="signingCertAlias"> <Value>MyFedlet</Value>
在 .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>
重新啟動與您的 .NET 應用程式關聯的應用程式集區。
.NET Fedlet 支援識別提供者啟動的單次登出和服務提供者啟動的單次登出。為實作單次登出,.NET Fedlet 範例應用程式將 logout.aspx 和 spinitiatedslo.aspx 檔案包括在 asp.net/SampleApp 資料夾中。若要瞭解 Fedlet 單次登出功能如何工作,請部署 .NET Fedlet 範例應用程式。
如果您尚未配置 .NET Fedlet,請依照 Readme 檔案中說明的步驟進行作業。
將 logout.aspx 和 spinitiatedslo.aspx 檔案複製到您的 .NET 應用程式的公共內容中。
對您的應用程式的配置檔案進行以下變更:
在 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 範例應用程式顯示了配置單次登入的方式。為應用程式安裝必要的小工具後,需要提供特定的 URI,以在識別提供者成功進行認證後接收包含 SAMLv2 回應的 HTTP POST。以下代碼範例顯示如何在 .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 支援多個識別提供者和識別提供者探索服務。
在某些部署中,您可能需要為 .NET Fedlet 配置多個識別提供者 (如 Oracle OpenSSO 8.0 Update 2)。針對您要增加的每個附加識別提供者執行如下作業。
取得附加識別提供者的 XML 中介資料檔案。
將附加識別提供者的中介資料檔案命名為 idpn.xml,此處的 n 是您正在增加的識別提供者。例如,將第二個識別提供者檔案命名為 idp2.xml,將第三個識別提供者檔案命名為 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 屬性的值,使用逗號 (,) 分隔這兩個實體 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 讀取器服務 URL。例如:
sun-fm-saml2-readerservice-url=http://discovery.common.com/opensso/saml2reader
重新啟動與您的 .NET 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 方法。