要配置管道以支持 WS-Security ,必须向管道配置文件添加安全处理程序。 您可以使用 CICS® 随附的安全处理程序,或创建自己的安全处理程序。 请记住, CICS 不支持 WS-Policy ,并且会忽略您在 WSDL 文档中配置的任何安全性约束。
有关管道配置文件元素的信息,请参阅 Support for WS-Security。
过程
- 将
<wsse_handler> 元素添加到安全处理程序的管道。有关此元素的结构的信息,请参阅
<wsse_handler> pipeline configuration element。 安全处理程序必须包含在服务提供者或请求者管道中的
<service_handler_list> 元素中。
<service_handler_list> 元素中处理程序元素的顺序决定了在运行时调用每个处理程序的顺序。 在支持 WS-Security 的管道中,加密的 SOAP 消息将保持加密状态,直到调用
<wsse_handler> 元素为止。 因此,必须在处理未加密消息的任何其他处理程序之前指定
<wsse_handler> 元素。
对以下元素进行编码:
<wsse_handler>
<dfhwsse_configuration version="1">
</dfhwsse_configuration>
</wsse_handler>
<dfhwsse_configuration> 元素是配置中其他元素的容器。
- 可选: 对
<authentication> 元素进行编码。有关此元素的结构的信息,请参阅
The <authentication> element。
在服务请求者管道中, <authentication> 元素指定必须在出站 SOAP 消息的安全性头中使用的认证类型。
在服务提供商管道中,该元素指定 CICS 是否使用入站 SOAP 消息中的安全令牌来确定处理工作所依据的用户 ID。
- 对 trust 属性进行编码,以指定是否使用声明的身份以及服务提供者与请求者之间的信任关系的性质。
- 可选: 如果指定了 trust=none,请对 mode 属性进行编码,以指定如何处理消息中找到的凭证。
- 在
<authentication> 元素中,对以下元素进行编码:
- 可选的空
<suppress/> 元素。如果在服务提供者管道中指定了此元素,那么处理程序不会尝试使用消息中的任何安全性令牌来确定工作在哪个用户标识下运行。
如果在服务请求者管道中指定了此元素,那么处理程序不会尝试向出站 SOAP 消息添加认证所需的任何安全性令牌。
- 在请求者管道中,这是一个可选的
<algorithm> 元素,用于指定用于对 SOAP 消息主体进行签名的算法的 URI。 如果信任与方式属性值的组合指示对消息进行了签名,那么必须指定此元素。 只能在此元素中指定具有 SHA1 算法的 RSA。 URI 为 http://www.w3.org/2000/09/xmldsig#rsa-sha1。
- 可选
<certificate_label> 元素,用于指定与安装在 RACF®中的 X.509 数字证书相关联的标签。 如果在服务请求者管道中指定此元素,并且未指定 <suppress> 元素,那么会将证书添加到 SOAP 消息中的安全性头。 如果未指定 <certificate_label> 元素,那么 CICS 将使用 RACF 密钥环中的缺省证书。在服务提供者管道中将忽略此元素。
- 可选: 将
<sts_authentication> 元素编码为 <authentication> 元素的替代元素。
- 可选: 仅在服务提供者方式下,对 action 属性进行编码以指定 STS 是验证还是交换安全性令牌。
- 在
<sts_authentication> 元素中,对以下元素进行编码:
<auth_token_type> 元素。 当您在服务请求者管道中指定 <sts_authentication> 元素时,此元素是必需的,并且在服务提供者管道中是可选的。 有关更多信息,请参阅 The <auth_token_type> element。
- 在服务请求者管道中,
<auth_token_type> 元素指示当 CICS 向其发送 DFHWS-USERID 容器中包含的用户标识时 STS 发出的令牌类型。 CICS 从 STS 接收的令牌放置在出站消息的头中。
- 在服务提供者管道中,
<auth_token_type> 元素用于确定 CICS 从消息头获取并发送到 STS 以交换或验证的身份令牌。 CICS 使用消息头中指定类型的第一个身份令牌。 如果未指定此元素,那么 CICS 将使用它在消息头中找到的第一个身份令牌。 CICS 不将以下内容视为身份令牌:
wsu:Timestamp
xenc:ReferenceList
xenc:EncryptedKey
ds:Signature
- (仅在服务提供者管道中) 可选的空
<suppress/> 元素。 如果指定了此元素,那么处理程序不会尝试使用消息中的任何安全性令牌来确定运行工作的用户标识。 <suppress/> 元素包含 STS 返回的身份令牌。
- 可选: 对
<sts_endpoint> 元素进行编码。仅当还指定了 <sts_authentication> 元素时,才使用此元素。 在 <sts_endpoint> 元素中,对以下元素进行编码:
6.3 使用 CICS 安全令牌服务的 SAML 支持已从 CICS TS 6.3 中删除。
- 可选: 如果需要对入站 SOAP 消息进行数字签名,请对空的
<expect_signed_body/> 元素进行编码。
<expect_signed_body/> 元素指示必须对入站消息的 <body> 进行签名。 如果入站消息的主体未正确签名,那么 CICS 将拒绝具有安全故障的消息。
- 可选: 如果要拒绝数字签名的入站 SOAP 消息,请对空
<reject_signature/> 元素进行编码。
- 可选: 如果需要对入站 SOAP 消息进行加密,请对空的
<expect_encrypted_body/> 元素进行编码。
<expect_encrypted_body/> 元素指示必须对入站消息的 <body> 进行加密。 如果入站消息的主体未正确加密,那么 CICS 将拒绝具有安全故障的消息。
- 如果要拒绝部分或完全加密的入站 SOAP 消息,请对空的
<reject_encryption/> 元素进行编码。
- 可选: 如果需要对出站 SOAP 消息进行签名,请对
<sign_body> 元素进行编码。
- 在
<sign_body> 元素中,对 <algorithm> 元素进行编码。
- 在
<algorithm> 元素之后,对 <certificate_label> 元素进行编码。
以下是已完成的
<sign_body> 元素的示例:
<sign_body>
<algorithm>http://www.w3.org/2000/09/xmldsig#rsa-sha1</algorithm>
<certificate_label>SIGCERT01</certificate_label>
</sign_body>
- 可选: 如果需要对出站 SOAP 消息进行加密,请对
<encrypt_body> 元素进行编码。
- 在
<encrypt_body> 元素中,对 <algorithm> 元素进行编码。
- 在
<algorithm> 元素之后,对 <certificate_label> 元素进行编码。
以下是已完成的
<encrypt_body> 元素的示例:
<encrypt_body>
<algorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</algorithm>
<certificate_label>ENCCERT02</certificate_label>
</encrypt_body>
示例
以下示例显示了已完成的安全处理程序,其中存在大部分可选元素:
<wsse_handler>
<dfhwsse_configuration version="1">
<authentication trust="signature" mode="basic">
<suppress/>
<certificate_label>AUTHCERT03</certificate_label>
</authentication>
<expect_signed_body/>
<expect_encrypted_body/>
<sign_body>
<algorithm>http://www.w3.org/2000/09/xmldsig#rsa-sha1</algorithm>
<certificate_label>SIGCERT01</certificate_label>
</sign_body>
<encrypt_body>
<algorithm>http://www.w3.org/2001/04/xmlenc#tripledes-cbc</algorithm>
<certificate_label>ENCCERT02</certificate_label>
</encrypt_body>
</dfhwsse_configuration>
</wsse_handler>