透過原則附件來定義 Web 服務原則

在 Liberty 中,您可以在 Web 服務應用程式的原則附件或「Web 服務說明語言 (WSDL)」檔內,定義 Web 服務原則 (WS-Policy)。

關於這項作業

如果 WSDL 檔案沒有包裝在您的應用程式中,您可以使用原則附件,來配置您 Web 服務應用程式的 WS-Policy。只要您啟用 Java API for XML Web Services (JAX-WS) 2.2 特性,通常會在您的 Web 服務應用程式套件中自動啟用原則附件特性。您只需同時配置 Web 服務用戶端和提供者端,以定義應用程式的 WS-Policy 附件檔。

WS-Policy 支援是下列規格在應用程式伺服器上的實作。
  • WS-Policy 是一種規格,指定 Web 服務可以使用 XML 來通告其安全和服務品質的原則,並供 Web 服務消費者用來指定其原則需求。如需相關資訊,請參閱 Web 服務原則 1.5 - 架構
  • 「WS-Policy 附件」依照「Web 服務原則架構」中的定義,根據原則所適用的主體,定義了兩種用來與原則產生關聯的通用機制。如需相關資訊,請參閱 Web 服務原則 1.2 - 附件

程序

  1. 建立 policy-attachments-client.xml 檔或 policy-attachments-server.xml 檔。

    下列範例顯示如何在 policy-attachments-client.xml 檔或 policy-attachments-server.xml 檔中定義屬性:

    <attachments
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    xmlns:wsp="http://www.w3.org/ns/ws-policy"
    xmlns:wsa="http://www.w3.org/2005/08/addressing"
    xmlns:sp13="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200802"
    xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
    <wsp:PolicyAttachment wsdlNamespace="http://tempuri.org/AreaService/">
    	<wsp:AppliesTo>
    	   <wsp:URI>http://tempuri.org/AreaService/#wsdl11.service(AreaService)</wsp:URI>
    	</wsp:AppliesTo>
    	<wsp:Policy wsu:Id="UsernameTokenwithPasswordHashoverSSL">
    	   <wsp:ExactlyOne>
    	       <wsp:All>
    		   <sp:SupportingTokens>
    			<wsp:Policy>
    		          <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
    			      <wsp:Policy>
    				  <sp:WssUsernameToken10 />
    				  <sp:HashPassword />
    			      </wsp:Policy>
    			   </sp:UsernameToken>
    			</wsp:Policy>
    		   </sp:SupportingTokens>
    		</wsp:All>
    	   </wsp:ExactlyOne>
    	</wsp:Policy>
    </wsp:PolicyAttachment>
    </attachments>
    以下是兩種用來連結原則的方式:
    • 依如下所示,使用端點 DomainExpression <wsa:EndpointReference> 來直接定義 Web 服務 URL。
      <wsp:AppliesTo>
         <wsa:EndpointReference>
             <wsa:Address>http://localhost:8091/wsatApp/HelloImplService</wsa:Address>
         </wsa:EndpointReference>
      </wsp:AppliesTo>
    • 依如下所示,使用 URI DomainExpression <wsp:URI> 來連結原則。
      <wsp:AppliesTo>
          <wsp:URI>http://server.test.ws.ibm.com/#wsdl11.service(HelloImplService)</wsp:URI>
      </wsp:AppliesTo>
        

      下表顯示原則附件檔中的 WSDL 元素和其 ID 表示式:

      表 1. <wsp:URI> 表示式清單
      WSDL 元素 ID 表示式(省略 targetNamespace)
      定義 wsdl11.definitions()
      訊息 wsdl11.message(message)
      訊息/組件 wsdl11.messagePart(message / part)
      portType wsdl11.portType(portType)
      portType/作業 wsdl11.portTypeOperation(portType/operation)
      portType/作業/輸入 wsdl11.portTypeOperation.input(portType/operation)
      portType/作業/輸出 wsdl11.portTypeOperation.output(portType/operation)
      portType/作業/錯誤 wsdl11.portTypeOperation.fault(portType/operation/fault)
      連結 wsdl11.binding(binding)
      連結/作業 wsdl11.bindingOperation(binding/operation)
      連結/作業/輸入 wsdl11.bindingOperation.input(binding/operation)
      連結/作業/輸出 wsdl11.bindingOperation.output(binding/operation)
      連結/作業/ 錯誤 wsdl11.bindingOperation.fault(binding/operation/fault)
      服務 wsdl11.service(service)
      wsdl11.port(service/port)
  2. policy-attachments-client.xml 檔或 policy-attachments-server.xml 檔放到您應用程式的 WEB-INFMETA-INF 資料夾中。
    • 針對 Web 服務的用戶端 WS-Policy,將 policy-attachments-client.xml 放到您應用程式的 WEB-INFMETA-INF 資料夾中。
    • 針對 Web 服務的提供者 WS-Policy,將 policy-attachments-server.xml 放到您應用程式的 WEB-INFMETA-INF 資料夾中。

結果

您已完成透過原則附件來定義 WS-Policy,而沒有將 WSDL 檔案包裝在應用程式中。

指示主題類型的圖示 作業主題



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