z/OS Connect REST 客户机支持允许 z/OS Connect 用户通过 z/OS Connect 将请求路由至远程 REST 应用程序,从而利用现有拦截器基础结构。
关于此任务
配置 zosConnect-1.2 功能部件时此功能可用。z/OS Connect REST
客户机服务是 z/OS Connect 服务 SPI 实现。调用此服务的请求是通过两种方式发出的:
所定义服务的服务调用的示例为:https://host:port/my/custom/uri (HTTP verb: GET/POST/PUT/DELETE)。z/OS Connect
识别示例中定义的 invokeURI 属性与 serviceName 属性之间的关联。z/OS Connect
在实现 z/OS Connect 关联服务 (restClientServiceY) 时调用该调用方法。
有关 invokeURI 属性提供的功能和灵活性的更多信息,请参阅 z/OS Connect 1.2 的文档。
- 配置 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
https://host:port/my/custom/uri 以及 GET、POST、PUT 或 DELETE HTTP 方法来启动
serviceY invoke 方法的实现。在此情况下,因为 serviceY 服务引用 z/OS Connect REST 客户机服务的实例,所以将对此实例调用 invoke() 方法。有关可用配置属性及缺省值的更多信息,请参阅 z/OS Connect 1.0 和 z/OS Connect 1.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 元素配置的用户名和密码。
- (可选)配置证书认证。将 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" />