下表列出了訊息保護策略配置,以及由該配置的 WS-Security SOAP 訊息安全性提供者所執行的最終訊息安全性作業。
表 10–1 訊息保護策略與 WS-Security SOAP 訊息安全性作業對映
訊息保護策略 |
最終的 WS-Security SOAP 訊息保護作業 |
---|---|
auth-source="sender" |
此訊息包含 wsse:Security 標頭,此標頭包含 wsse:UsernameToken (帶有密碼)。 |
auth-source="content" |
對 SOAP 訊息內文的內容進行簽名。此訊息包含 wsse:Security 標頭,此標頭包含以 ds:Signature. |
auth-source="sender" auth-recipient="before-content" OR auth-recipient="after-content" |
SOAP 訊息內文的內容已加密,並由最終的 xend:EncryptedData 替代。此訊息包含 wsse:Security 標頭,此標頭包含 wsse:UsernameToken (帶有密碼) 和 xenc:EncryptedKey。xenc:EncryptedKey 包含用於加密 SOAP 訊息內文的金鑰。此金鑰在收信人的公開金鑰中加密。 |
auth-source="content" auth-recipient="before-content" |
SOAP 訊息內文的內容已加密,並由最終的 xend:EncryptedData 替代。xenc:EncryptedData 已簽名。此訊息包含 wsse:Security 標頭,此標頭包含 xenc:EncryptedKey 和 ds:Signature. xenc:EncryptedKey 包含用於加密 SOAP 訊息內文的金鑰。此金鑰在收信人的公開金鑰中加密。 |
auth-source="content" auth-recipient="after-content" |
SOAP 訊息內文的內容已簽名和加密,並由最終的 xend:EncryptedData 替代。此訊息包含 wsse:Security 標頭,此標頭包含 xenc:EncryptedKey 和 ds:Signature。xenc:EncryptedKey 包含用於加密 SOAP 訊息內文的金鑰。此金鑰在收信人的公開金鑰中加密。 |
auth-recipient="before-content" OR auth-recipient="after-content" |
SOAP 訊息內文的內容已加密,並由最終的 xend:EncryptedData 替代。此訊息包含 wsse:Security 標頭,此標頭包含 xenc:EncryptedKey。xenc:EncryptedKey 包含用於加密 SOAP 訊息內文的金鑰。此金鑰在收信人的公開金鑰中加密。 |
未指定策略。 |
模組未執行任何安全性作業。 |
Application Server 使用 SOAP 處理層中整合的訊息安全性提供者來實作訊息安全性。訊息安全性提供者取決於 Application Server 的其他安全性功能。
如果使用的 Java SDK 版本早於 1.5.0,而且使用了加密技術,請配置 JCE 提供者。
配置 JCE 提供者中論述了如何配置 JCE 提供者。
如果使用了使用者名稱記號,請在必要時配置使用者資料庫。使用使用者名稱/密碼記號時,必須配置適當的範圍,並為該範圍配置適當的使用者資料庫。
編輯範圍中論述了如何配置使用者資料庫。
管理證書和私密金鑰 (如有必要)。
關於證書檔案中論述了如何管理憑證和私密金鑰。
如果已將 Application Server 的功能配置為供訊息安全性提供者使用,則可能會啟用隨 Application Server 一起安裝的提供者 (如啟用訊息安全性的提供者中所述)。
J2SE 1.4.x 中包含的 Java 加密擴展 (JCE) 提供者不支援 RSA 加密。由於由 WS-Security 定義的 XML 加密通常是基於 RSA 加密,因此,若要使用 WS-Security 來加密 SOAP 訊息,您必須下載並安裝支援 RSA 加密的 JCE 提供者。
RSA 是 RSA Data Security, Inc. 開發的公開金鑰加密技術。RSA 的首字母縮略分別代表該技術的三位發明者:Rivest、Shamir 和 Adelman。
如果您是在 Java SDK 1.5 版中執行 Application Server,則 JCE 提供者已進行正確配置。如果您是在 Java SDK 1.4.x 版中執行 Application Server,請執行以下步驟,以靜態方式將 JCE 提供者增加為 JDK 環境的一部分:
下載並安裝 JCE 提供者 JAR (Java 歸檔) 檔案。
透過以下 URL 可以獲得支援 RSA 加密的 JCE 提供者之清單:http://java.sun.com/products/jce/jce14_providers.html.
將 JCE 提供者 JAR 檔案複製到 java-home/jre/lib/ext/。
停止 Application Server。
如果未停止 Application Server 而後來又在該程序中將其重新啟動,則 Application Server 將無法識別 JCE 提供者。
在任何一種文字編輯器中編輯 java-home/jre/lib/security/java.security 特性檔案。將剛下載的 JCE 提供者增加至此檔案。
java.security 檔案包含用於增加該提供者的詳細說明。通常,您需要在具有類似特性的某個位置處增加一行,其格式如下:
security.provider.n=provider-class-name |
在此範例中,n 是 Application Server 計算安全性提供者時所使用的喜好設定順序。將剛才增加的 JCE 提供者的 n 設定為 2。
例如,如果下載的是「The Legion of the Bouncy Castle JCE」提供者,則應增加以下行。
security.provider.2=org.bouncycastle.jce.provider. BouncyCastleProvider |
確定將 Sun 安全性提供者保持在最高的喜好設定順序,其值為 1。
security.provider.1=sun.security.provider.Sun |
將其他安全性提供者的層級調低,從而使每個層級上只有一個安全性提供者。
以下是提供必要 JCE 提供者並將現有提供者保持在正確位置的 java.security 檔案範例。
security.provider.1=sun.security.provider.Sun security.provider.2=org.bouncycastle.jce.provider. BouncyCastleProvider security.provider.3=com.sun.net.ssl.internal.ssl.Provider security.provider.4=com.sun.rsajca.Provider security.provider.5=com.sun.crypto.provider.SunJCE security.provider.6=sun.security.jgss.SunProvider |
儲存並關閉檔案。
重新啟動 Application Server。