「Web 服務安全」預設配置

在執行時期,「Web 服務安全」(WS-Security) 配置是對 WS-Security 原則的補充。 WS-Security 配置遵循 CXF 名稱/值配對樣式,且保留 CXF 內容名稱。 有些內容有預設值,有些內容沒有。

server.xml 檔中,WebSphere® Application Server Liberty 提供適用於所有服務的伺服器層次配置。 這個配置稱為預設 WS-Security 配置。

server.xml 檔有兩個預設的 WS-Security 配置:一個用於用戶端應用程式,一個用於提供者應用程式。 在 server.xml 檔中,不存在任何其他 WS-Security 配置。 如果您的應用程式需要有別於預設配置的自訂 WS-Security 配置,您必須以程式設計方式進行配置。

下列範例顯示預設值用戶端配置:
<wsSecurityClient id="default"
                  ws-security.username="user2"
                  ws-security.password="security">
  <signatureProperties org.apache.ws.security.crypto.merlin.keystore.type="jks"
                       org.apache.ws.security.crypto.merlin.keystore.password="LibertyX509Client"
                       org.apache.ws.security.crypto.merlin.keystore.alias="x509ClientCert"
                       org.apache.ws.security.crypto.merlin.file="${server.config.dir}/x509ClientDefault.jks"/>
</wsSecurityClient>
下列範例顯示預設提供者配置:
<wsSecurityProvider id="default"
                    ws-security.username="user2">
  <encryptionProperties org.apache.ws.security.crypto.merlin.keystore.type="jks"
                        org.apache.ws.security.crypto.merlin.keystore.password="LibertyX509Server"
                        org.apache.ws.security.crypto.merlin.keystore.alias="x509ServerCert"
                        org.apache.ws.security.crypto.merlin.file="${server.config.dir}/x509ServerDefault.jks"/>
</wsSecurityProvider>
下表顯示 Liberty 中預設的 WS-Security 使用者內容。您可以在 CXF 中找到這些相同的內容。
表 1. Liberty 和 CXF 中預設的 WS-Security 使用者內容
Liberty/CXF 內容 預設值
ws-security.username none
ws-security.password none
ws-security.signature.username none
ws-security.encryption.username none
下表顯示 Liberty 中的 WS-Security 回呼處理常式類別和加密內容,以及對等的 CXF 內容(如果有不同的話)。
表 2. Liberty 中的 WS-Security 回呼處理常式類別和加密內容,以及對等的 CXF 內容
Liberty 內容 CXF 內容 預設值
ws-security.callback-handler   none
<signatureProperties> ws-security.signature.properties none
<encryptionProperties> ws-security.encryption.properties none
在 WebSphere Application Server 中,wss4j 內容指定為 signaturePropertiesencryptionProperties 元素的屬性。 下列範例顯示 wss4j 內容:
<signatureProperties org.apache.ws.security.crypto.merlin.keystore.type="jks"
                     org.apache.ws.security.crypto.merlin.keystore.password="LibertyX509Client"
                     org.apache.ws.security.crypto.merlin.keystore.alias="x509ClientDefault"
                     org.apache.ws.security.crypto.merlin.file="${server.config.dir}/x509ClientDefault.jks">
</signatureProperties>
下表顯示 Liberty 中的 wss4j 加密內容。您可以在 CXF 中找到這些相同的內容。
表 3. Liberty 和 CXF 中的 wss4j 加密內容
Liberty/CXF 內容 預設值
org.apache.ws.security.crypto.provider

org.apache.ws.security.components.
crypto.Merlin

org.apache.ws.security.crypto.
merlin.keystore.provider

預設為已安裝的提供者

org.apache.ws.security.crypto.
merlin.cert.provider

預設為金鑰儲存庫提供者

org.apache.ws.security.crypto.
merlin.x509crl.file

none
下表顯示 Liberty 中的 wss4j 金鑰儲存庫內容。您可以在 CXF 中找到這些相同的內容。
表 4. Liberty 和 CXF 中的 wss4j 金鑰儲存庫內容
Liberty/CXF 內容 預設值

org.apache.ws.security.crypto.
merlin.keystore.file

none

org.apache.ws.security.crypto.
merlin.keystore.password

none

org.apache.ws.security.crypto.
merlin.keystore.type

none

org.apache.ws.security.crypto.
merlin.keystore.alias

none

org.apache.ws.security.crypto.
merlin.keystore.private.password

none
下表顯示 Liberty 中的 wss4j 信任儲存庫內容。您可以在 CXF 中找到這些相同的內容。
表 5. Liberty 和 CXF 中的 wss4j 信任儲存庫內容
Liberty 內容 預設值

org.apache.ws.security.crypto.
merlin.truststore.file

none

org.apache.ws.security.crypto.
merlin.truststore.password

none

org.apache.ws.security.crypto.
merlin.truststore.type

none
下表顯示 Liberty 中的 WS-Security 細項內容。您可以在 CXF 中找到這些相同的內容。
表 6. Liberty 和 CXF 中的 WS-Security 細項內容
Liberty/CXF 內容 預設值
ws-security.enable.nonce.cache true
ws-security.cache.config.file none
下表顯示只在 Liberty 中才支援的內容。
表 7. 只在 Liberty 中才支援的內容
Liberty 內容 CXF 內容 預設值
callerToken none none

配置其他內容

您可以設定多個額外的屬性,向 WS-Security 執行時期環境提供附加的配置資訊。 請參閱下列鏈結,以取得這些內容的詳細資訊:

server.xml 檔中,您可以在預設 WS-Security 配置中指定任何其他內容。

比方說,如果要指定任何其他內容,請在 wsSecurityClient 及/或 wsSecurityProvider 區段中指定它們。
<wsSecurityProvider id="default"
  <signatureProperties ... />
  <encryptionProperties ... />
  ws-security.cache.config.file = "${server.config.dir}/resources/ws-security/new_cxf-ehcache.xml"
</wsSecurityProvider>

<wsSecurityClient id="default"
  <signatureProperties ... />
  <encryptionProperties ... />
  ws-security.username-token.always.encrypted="false"
</wsSecurityClient>

配置快取

WS-Security 在 UsernameToken、created 時間戳記和安全記號中,提供 nonce 的預設快取實作。 預設快取實作以 ehCache 為基礎,預設值如下:
maxEntriesLocalHeap="5000"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"

如果要修改預設快取設定,您可以提供 ehCache 配置 XML 檔。 請利用 ws-security.cache.config.file 自訂內容來指定其自訂內容有別於預設值的檔名。 您必須將這個檔案放在伺服器設定檔中的某處。 您可以從下列位置找到其他快取設定配置檔範例:http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup

配置更強的簽章演算法

由於 SHA1 簽章演算法很弱,「國家標準與技術機構 (NIST)」建議您使用更強的簽章演算法。

不過,WS-Security 原則 1.3 定義 HmacSha1 或 RsaSha1(統稱 sha1)作為唯一簽章演算法。 Liberty 中的 WS-Security 有一個配置選項會使用下列更強的簽章演算法:
  • RSA-SHA-256
  • RSA-SHA-384
  • RSA-SHA-512
  • HMAC-SHA-256
  • HMAC-SHA-384
  • HMAC-SHA-512

如果要配置 Liberty 中的 WS-Security 來支援更強的簽章演算法,您可以利用 signatureAlgorithm 屬性,在 server.xml 檔的 <signatureProperties> 元素內定義所需要的演算法。 signatureAlgorithm 屬性的有效值有 sha256、sha384 和 sha512。 比方說,如果您指定 sha512 作為 signatureAlgorithm 屬性值,在含有非對稱金鑰的簽章中所用的簽章演算法是 RSA-SHA-512,在含有對稱金鑰的簽章中所用的簽章演算法是 HMAC-SHA-512。

下列範例顯示需要 sha256 簽章演算法的用戶端配置範例:
<wsSecurityClient id="default"
  ws-security.password="security"
  ws-security.username="user1"
  ws-security.callback-handler="com.ibm.ws.wssecurity.example.cbh.CommonPasswordCallback"
  ws-security.signature.username="soaprequester">
  <signatureProperties
    signatureAlgorithm="sha256"
    org.apache.ws.security.crypto.merlin.keystore.type="jks"
    org.apache.ws.security.crypto.merlin.keystore.password="client"
    org.apache.ws.security.crypto.merlin.keystore.alias="soaprequester"
    org.apache.ws.security.crypto.merlin.file="${server.config.dir}/dsig-sender.ks" />
</wsSecurityClient>
下列範例顯示需要 sha256 簽章演算法的提供者端配置範例:
<wsSecurityProvider id="default"
  ws-security.callback-handler="com.ibm.ws.wssecurity.example.cbh.CommonPasswordCallback"
  ws-security.signature.username="soapprovider">
  <signatureProperties
    signatureAlgorithm="sha256"
    org.apache.ws.security.crypto.merlin.keystore.type="jks"
    org.apache.ws.security.crypto.merlin.keystore.password="server"
    org.apache.ws.security.crypto.merlin.keystore.alias="soapprovider"
    org.apache.ws.security.crypto.merlin.file="${server.config.dir}/dsig-receiver.ks" />
</wsSecurityProvider>

指示主題類型的圖示 概念主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_wssec_defaultconfig
檔名:cwlp_wssec_defaultconfig.html