「Web 服務基本交易」安全
「Web 服務基本交易 (WS-AT)」會定義它自己用來作為通訊協定一部分的內部 Web 服務。 在起始交易期間,以及在確定或回復處理程序期間,會呼叫這些內部 Web 服務。 同時 WS-AT 還需要雙向通訊。 WS-AT 需要可供 Liberty 伺服器在一般防火牆環境中運作的 DMZ Proxy,以及若干用來取得授權的 HTTPS 端點。 下列內容說明如何在 Liberty 中,配置用於 WS-AT 的 Proxy 和 Security Socket Layer (SSL)。
防火牆 Proxy
當 Liberty 伺服器是在一般防火牆環境中,各伺服器無法穿越防火牆來彼此通訊。 在這個狀況下,這些伺服器需要一個 DMZ Proxy,才能正常運作。 您可以配置 server.xml 檔來定義 Proxy 端點。
例如,將 IBM HTTP Server (IHS) 設為 DMZ Proxy。
在圖 1 中,如果要透過 IHS,在兩個 Liberty 伺服器之間通訊,請執行下列步驟:
- 配置 IHS 外掛程式將要求轉遞給 Liberty 伺服器。
如需相關資訊,請參閱配置 Liberty 的 Web 伺服器外掛程式。
- 對於 IHS 1,配置 IHS 1 外掛程式將要求轉遞至 Liberty A,然後將 <Uri Name="/ibm/wsatservice/*" /> 加入 <UriGroup> 項目中。
- 對於 IHS 2,配置 IHS 2 外掛程式將要求轉遞至 Liberty B,然後將 <Uri Name="/ibm/wsatservice/*" /> 加入 <UriGroup> 項目中。
- 在 Liberty 中,新增 externalURLPrefix 參數至 server.xml 檔中:
- 在 Liberty A,將 IHS 1 的 externalURLPrefix 值設為 http://proxyserver1:80,如下所示:
<wsAtomicTransaction externalURLPrefix="http://proxyserver1:80"/>
- 在 Liberty B,將 IHS 2 的 externalURLPrefix 值設為 http://proxyserver2:81,如下所示:
<wsAtomicTransaction externalURLPrefix="http://proxyserver2:81"/>
- 在 Liberty A,將 IHS 1 的 externalURLPrefix 值設為 http://proxyserver1:80,如下所示:
圖 1. 在兩個 Liberty 伺服器之間,透過 IHS 通訊

Security Socket Layer
依預設,Liberty 伺服器的通訊並不使用 SSL。 如果您需要 WS-AT 安全,且要將安全資訊重新導向到安全的埠,您必須新增 appSecurity-2.0 Liberty 特性至 server.xml 檔中。 您也可以根據維護 Liberty 及其應用程式安全,在 Liberty 中啟用 SSL。
您可以根據下列項目來配置 WS-AT 安全的 SSL:
<wsAtomicTransaction SSLEnabled="false" SSLRef="defaultSSLConfig" clientAuth="false"/>
其中:- SSLEnabled
- 指定 WS-AT 是否啟用 SSL。 有效值為 true 和 false。 預設值為 false。將它設為 true 會啟用 SSL。
- SSLRef
- 在 server.xml 檔中定義 SSL 配置。 WS-AT 需要這個 SSL 配置,才能通訊。
- clientAuth
- 指定 WS-AT 是否啟用 clientAuthentication。 有效值為 true 和 false。 預設值為 false。在將 clientAuth 值設為 true 來啟用 clientAuthentication 之前,請務必在 SSL 配置中,將 clientAuthenticationSupported 值設為 true。
重要: SSL 配置只適用於 Liberty 伺服器層次。
提示: 在下列程式碼 Snippet 中,預設 SSLEnabled 值是 false。
如果您想啟用 SSL 和 Proxy 兩者,請將 SSLEnabled 值設為 true,將 externalURLPrefix 值設成開頭為 https:// 的 proxy 位址。
<wsAtomicTransaction SSLEnabled="false" SSLRef="defaultSSLConfig" externalURLPrefix="" clientAuth="false"/>