z/OS Connect-REST-Client-Service konfigurieren

Mit der z/OS Connect-REST-Clientunterstützung können z/OS Connect-Benutzer Anforderungen über z/OS Connect an ferne REST-Anwendungen weiterleiten und dabei die vorhandene Interceptorinfrastruktur nutzen.

Informationen zu diesem Vorgang

Diese Funktion ist verfügbar, wenn Sie das Feature "zosConnect-1.2" konfigurieren. Der z/OS Connect-REST-Client-Service ist eine SPI-Implementierung des z/OS Connect-Service. Anforderungen, die diesen Service aufrufen, werden folgendermaßen erstellt:

  • Verwenden Sie den Abfrageparametermechanismus ?action=invoke wie folgt: https://Hostname:Port/zosConnect/services/serviceY?action=invoke. Dabei ist "serviceY" der Servicename, der dem konfigurierten Element zosConnectServiceRestClient zugeordnet ist.
  • Verwenden Sie die zosConnectService-Attributdefinition mit dem Namen invokeURI. Sie können dieses Attribut zum Definieren eines angepassten URI verwenden, der einem Servicenamen und einem der folgenden HTTP-Verben zugeordnet ist: GET, POST, PUT, DELETE. Beispiel:
    <zosConnectService serviceName="serviceY" serviceRef="restClientServiceY" invokeURI="/my/custom/uri" />

Im Folgenden finden Sie ein Beispiel für einen Serviceaufruf für den definierten Service: https://host:port/my/custom/uri (HTTP-Verb: GET/POST/PUT/DELETE). z/OS Connect versteht die im Beispiel definierte Zuordnung des Attributs invokeURI und des Attributs serviceName. z/OS Connect ruft die Aufrufmethode in der Implementierung des zugeordneten z/OS Connect-Service (restClientServiceY) auf.

Weitere Informationen zur Funktionalität und zur Flexibilität, die das Attribut invokeURI bietet, finden Sie in der Dokumentation zu z/OS Connect 1.2.

Vorgehensweise

  1. Konfigurieren Sie das Element zosConnectServiceRestClient und ordnen Sie es einem zosConnectService-Element zu.
    <featureManager>
    	 <feature>zosConnect-1.2</feature>
    </featureManager>
    
    <!-- Globale Interceptordefinition zum Ausführen aller Serviceanforderungen -->
    <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-Defintion -->
    <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" />

    Im Beispiel werden an den Service "serviceY" gerichtete Anforderungen an den fernen Host und Port weitergeleitet, die unter dem zugeordneten Service "restClientServiceY" konfiguriert sind und den konfigurierten URI sowie die HTTP-Methode DELETE verwenden. Die JSON-Nutzdaten werden automatisch mit der Fernanforderung gesendet. Wenn Sie das Element zosConnectServiceRestClient konfigurieren, geben Sie die Attribute für den Hostnamen und die Portnummer an. Wenn Sie die Attribute "uri" und "httpMethod" nicht angeben, werden die Werte aus der ursprünglichen an den Service "serviceY" gerichteten Clientanforderung verwendet. Das Beispiel zeigt außerdem, dass jede an den Service "serviceY" gerichtete Anforderung protokolliert, berechtigt und geprüft wird, bevor sie an den fernen Endpunkt weitergeleitet wird, weil die Interceptors so konfiguriert sind, dass sie global ausgeführt werden. Die Interceptors protokollieren und prüfen zudem die Antworten bei der Rückgabe vom fernen Endpunkt. Da für den Service "serviceY" das Attribut "invokeURI" konfiguriert ist, kann der Anforderer die Implementierung der Methode invoke für serviceY mit der URL https://host:port/my/custom/uri unter Verwendung der HTTP-Methode GET, POST, PUT, oder DELETE starten. In diesem Fall wird die Methode invoke() in dieser Instanz aufgerufen, weil sich der Service "serviceY" auf eine Instanz des z/OS Connect-REST-Client-Service bezieht. Weitere Informationen zu den verfügbaren Konfigurationsattributen und Standardwerten finden Sie in der Dokumentation zu z/OS Connect 1.0 und z/OS Connect 1.2.

  2. (Optional) Konfigurieren Sie die Basisauthentifizierung. Fügen Sie der Datei server.xml das Feature appSecurity-2.0 hinzu.
    <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" />

    Die Konfiguration aktiviert die Benutzername/Kennwort-Kombination, die für das Element zosConnectServiceRestClientBasicAuth konfiguriert ist und bei der Anforderung an den fernen REST-Anwendungsendpunkt weitergegeben werden soll.

  3. (Optional) Konfigurieren Sie die Zertifikatsauthentifizierung. Fügen Sie der Datei server.xml das Feature appSecurity-2.0 hinzu.

    Das Beispiel zeigt die Konfiguration des Client-Keystores und Client-Truststores und deren Zuordnung zur zosConnectServiceRestClient-Konfiguration.

    <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" />

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_zconnect_rest_client.html