設定 z/OS Connect REST 用戶端服務

z/OS Connect REST 用戶端支援可讓 z/OS Connect 使用者透過 z/OS Connect,將要求遞送至遠端 REST 應用程式;因而利用現有的攔截程式基礎架構。

關於這項作業

在您配置 zosConnect-1.2 特性時,就可以使用此功能。 z/OS Connect REST 用戶端服務是 z/OS Connect 服務 SPI 實作。 呼叫此服務的要求可用下列兩種方式來建立:

  • 請使用 ?action=invoke 查詢參數機制,如下所示: https://hostName:port/zosConnect/services/serviceY?action=invoke 其中 serviceY 是與所配置 zosConnectServiceRestClient 元素相關聯的服務名稱。
  • 使用稱為 invokeURI.zosConnectService 屬性定義您可以使用此屬性來定義與服務名稱及下列任何 HTTP 動詞相關聯的自訂 URI :GET、POST、PUT、DELETE; 例如:
    <zosConnectService serviceName="serviceY" serviceRef="restClientServiceY" invokeURI="/my/custom/uri" />

比方說,所定義之服務的服務呼叫如下:https://host:port/my/custom/uri (HTTP verb: GET/POST/PUT/DELETE)。 z/OS Connect 瞭解 invokeURI 屬性與範例中定義之 serviceName 屬性之間的關聯。 z/OS Connect 會在實作 z/OS Connect 相關聯服務 (restClientServiceY) 時,呼叫 invoke 方法。

如需 invokeURI 屬性所提供之功能和彈性的相關資訊,請參閱 z/OS Connect 1.2的說明文件。

已穩定的特性: zosConnect-1.0zosConnect-1.2 特性已穩定。 您可以繼續使用這些特性。 不過,請考量使用 IBM z/OS Connect Enterprise Edition 產品。

程序

  1. 配置 zosConnectServiceRestClient 元素,並將它與 zosConnectService 元素相關聯。
    <featureManager>
    	 <feature>zosConnect-1.2</feature>
    </featureManager>
    
    <!-- Global interceptor definition to run for all service requests -->
    <zosConnectInterceptors interceptorRef="auth,audit,fileSystemLogger" id="globalInterceptorList1"/>
    <fileSystemloggerInterceptor id="fileSystemLogger" logName="service1Log_%SERVERNAME%"sequence="1"/>
    <authorizationInterceptor id="auth" sequence="2"/>
    <auditInterceptor id="audit" sequence="3"/>
        
    <!-- ZosConnectManager definition -->
    <zosConnectManager globalAdminGroup="ADMIN" 
                       globalOperationsGroup="OPS" 
                       globalInvokeGroup="INVOKE"
                       globalInterceptorsRef="globalInterceptorList1"/>
    
    <zosConnectServiceRestClient id="restClientServiceY" 
                                 host="remoteHostName" 
                                 port="8800" 
                                 uri="/remote/endpoint" 
                                 httpMethod="DELETE"/>
    <zosConnectService serviceName="serviceY" serviceRef="restClientServiceY"invokeURI="/my/custom/uri" />
    

    在範例中,以 serviceY 服務為目標的要求所要送往的遠端主機和埠,是在相關聯的 restClientServiceY 服務之下配置,且使用所配置 URI 和 DELETE HTTP 方法。 JSON 內容會自動隨遠端要求一起傳送。 當您配置 zosConnectServiceRestClient 元素時,請指定主機名稱和埠號屬性。 如果您沒有指定 uri 或 httpMethod 屬性,會使用以 serviceY 服務為目標之原始用戶端要求中的值。 範例也顯示,由於攔截程式是配置成廣域執行,凡是以 serviceY 服務為目標的每一項要求都會先經過記載、授權和審核,再送往遠端端點。 攔截程式也會記載和審核遠端端點所傳回的回應。 因為已針對 serviceY 服務配置 invokeURI 屬性,所以要求者可以使用下列 URL 並使用 GETPOSTPUT,DELETE HTTP 方法來開始實作 serviceY invoke 方法: https://host:port/my/custom/uri 。 在此情況下,因為 serviceY 服務參照 z/OS Connect REST 用戶端服務的實例,所以會呼叫此實例上的 invoke() 方法。 如需可用的配置屬性和預設值的相關資訊,請參閱 z/OS Connect 1.0z/OS Connect 1.2的說明文件。

  2. (選用)配置基本鑑別。 將 appSecurity-2.0 特性新增至 server.xml 檔。
    <featureManager>
    	 <feature>zosConnect-1.2</feature>
    	 <feature>appSecurity-2.0</feature>
    </featureManager>
    
    <zosConnectServiceRestClientBasicAuth id="fredBasicAuth" userName="Fred" password="{xor}OS06Oy8oOw=="/>
    
    <zosConnectServiceRestClient id="restClientServiceY" 
                                 host="remoteHostName" 
                                 port="8800" 
                                 uri="/remote/endpoint" 
                                 httpMethod="POST" 
                                 basicAuthRef="bobBasicAuth"/>
    
    <zosConnectService serviceName="serviceY" serviceRef="restClientServiceY" />

    此配置會在對遠端 REST 應用程式端點發出要求時,傳播配置給 zosConnectServiceRestClientBasicAuth 元素的使用者名稱與密碼。

  3. (選用)配置憑證鑑別。 將 appSecurity-2.0 特性新增至 server.xml 檔。

    此範例顯示如何配置用戶端金鑰儲存庫及用戶端信任儲存庫,並將它們與 zosConnectServiceRestClient 配置相關聯。

    <featureManager>
    	 <feature>zosConnect-1.2</feature>
    	 <feature>appSecurity-2.0</feature>
    </featureManager>
    
    <keyStore id="clientKeyStore" password="zosConnect"
              location="${server.config.dir}/resources/security/clientKey.jks" />
    
    <keyStore id="clientTrustStore" password="zosConnect"
              location="${server.config.dir}/resources/security/clientTrust.jks" />
    
    <ssl id="sslCertificates" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore"/>
    
    <zosConnectServiceRestClient id="restClientServiceY" 
                                 host="remoteHostName" 
                                 port="8800" 
                                 uri="/remote/endpoint"  
                                 httpMethod="PUT" 
                                 sslCertsRef="sslCertificates"/>
    
    <zosConnectService serviceName="serviceY" serviceRef="restClientServiceY" />