文章目录
- [第一章 使用 SOAP 保护 Web 服务](#第一章 使用 SOAP 保护 Web 服务)
- [`IRIS` 中与 `SOAP` 安全相关的工具](#
IRIS
中与SOAP
安全相关的工具)
第一章 使用 SOAP 保护 Web 服务
IRIS
支持 WS-Security
、WS-Policy
、WS-SecureConversation
和 WS-ReliableMessaging
规范的部分内容,这些规范描述了如何为 Web
服务和 Web
客户端添加安全性。本主题总结了这些工具并列出了支持的标准。
如果 IRIS Web
客户端使用需要身份验证的 Web
服务,并且有特殊原因,则可以使用较旧的 WS-Security
登录功能。请参阅使用 WS-Security
登录功能。
IRIS
中与 SOAP
安全相关的工具
IRIS
提供以下与 Web
服务和 Web
客户端安全相关的工具:
- 能够为
IRIS
提供可信证书,以用于验证入站消息中收到的证书和签名。 - 能够表示
X.509
证书。可以在IRISSYS
数据库中存储拥有的证书以及将与之通信的实体的证书。对于拥有的证书,如果需要签署出站消息,还可以存储相应的私钥。
在 IRISSYS
数据库中,X.509
证书包含在 IRIS
凭证集中,具体来说,包含在 %SYS.X509Credentials
实例中。可以使用此类的方法将证书(以及可选的关联私钥文件,如果适用)加载到数据库中。可以直接执行这些方法,也可以使用管理门户。
可以指定谁拥有凭证集以及谁可以使用它。
%SYS.X509Credentials
类还提供了通过别名、指纹、主题密钥标识符等访问证书的方法。出于安全原因,无法使用常规对象和 SQL
技术访问 %SYS.X509Credentials
类。
- 支持
SSL
(安全套接字层)和TLS
(传输层安全性)。可以使用管理门户定义IRIS SSL/TLS
配置,然后可以使用这些配置通过X.509
证书保护与IRIS Web
服务或客户端之间的通信。
SSL/TLS
配置在 TLS
指南中讨论。
WS-Policy
支持IRIS
提供了将WS-Policy
信息附加到IRIS Web
服务或Web
客户端的功能。策略可以指定以下内容:- 使用
WS-SecureConversation
。 - 使用
SSL/TLS
。 - 要使用或期望的
WS-Security
功能。 - 要使用或期望的
WS-Addressing
标头。WS-Addressing
标头在创建Web
服务和Web
客户端中进行了描述,其中还介绍了如何手动添加这些标头。 - 使用
MTOM
(消息传输优化机制)打包。MTOM
在创建Web
服务和Web
客户端中进行了描述,其中还介绍了如何手动使用MTOM
打包。
- 使用
策略是在单独的配置类中创建的。在该类中,可以使用 XData
块来包含策略(即 XML
文档)并指定策略所附加到的服务或客户端的部分。可以将策略附加到整个服务或客户端或特定方法(甚至附加到特定请求或响应消息)。
可以使用 Studio
向导来创建此配置类。该向导提供了一组预定义策略,其中包含一组丰富的选项。只要策略需要 X.509
证书,该向导就允许在 IRISSYS
中存储的证书中进行选择。同样,只要策略需要 SSL/TLS
,也可以选择现有的 SSL/TLS
配置(如果适用)。
如果需要,可以稍后直接编辑该策略。当编译配置类时,该策略即生效。
- 支持直接创建和使用
WS-Security
元素。IRIS
提供了一组支持XML
的类来表示WS-Security
标头元素,例如 ``和
`。这些专用类提供了用于创建和修改这些元素的方法,以及它们之间的引用。
如果使用 WS-Policy
支持, IRIS
会自动使用这些类。如果直接使用 WS-Security
支持,则需要编写代码来创建这些类的实例并将其插入到安全标头中。
在所有情况下,当 IRIS Web
服务或客户端收到带有 WS-Security
元素的 SOAP
消息时,系统会创建这些类的实例来表示这些元素。它还会创建 %SYS.X509Credentials
的实例来包含在入站消息中收到的任何证书。
- 支持直接创建和使用
WS-SecureConversation
元素。IRIS
提供了一组支持XML
的类来表示这些元素。可以在Web
服务中定义回调方法来控制Web
服务如何响应安全对话请求。
既可以使用 WS-Policy
,也可以直接使用 WS-Security
和 WS-SecureConversation
。如果使用 WS-Policy
,系统会根据需要自动使用 WS-Security
工具。如果直接使用 WS-Security
或 WS-SecureConversation
,则需要进行更多编码。