WebSphere® Application Server V6
包括了许多用于保护 Web Service 的增强功能。在本文中将详细说明这些增强功能。
使用标识声明
在安全环境(如内部网、安全套接字层(SSL)连接)或虚拟专用网(VPN)内的安全环境中,当没有凭证(如密码)但具有其他可信凭证(如服务器标识)时发送请求者标识是有用的。WebSphere Application Server V6 支持下列类型的标识声明:
- 不具有密码的用户名令牌
- X.509 证书的 X.509 令牌
对于 X.509 证书来说,WebSphere Application Server
将该证书中的专有名称用作请求者标识。存在两种用于验证上游服务器的信任的信任方式:
- 基本认证(用户名令牌)
- 上游服务器将具有用户名和密码的用户名令牌发送到下游服务器。消息的使用者或接收方认证用户名令牌并基于 TrustedIDEvaluator 实现验证信任。TrustedIDEvaluator
实现过程必须实现 com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java™ 接口。
- 签名
- 上游服务器签署消息,此消息可以是任何消息部件,如简单对象访问协议(SOAP)主体。上游服务器将 X.509 令牌发送到下游服务器。消息的使用者或接收方验证签名并验证 X.509 令牌。基于 TrustedIDEvaluator 实现验证来自 X.509 令牌的标识或专有名称,此 X.509 令牌用于数字签名中。TrustedIDEvaluator
实现过程必须实现 com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator Java 接口。
下图说明了标识声明信任过程。

在此图中,服务器 s1 是上游服务器并在服务器 s1 和服务器 s2 之间设置标识声明。s1 服务器认证称为 bob 的标识。服务器 s1 要用密码将 bob 发送到 s2 服务器。信任方式是包含标识和密码的 s1
凭证。服务器 s2 接收到该请求,然后使用 Java 认证和授权服务(JAAS)登录模块来认证用户并使用可信标识鉴别程序来确定是否信任该标识。如果标识可信,则将 bob 用作调用服务的调用者。如果需要授权,则 bob 是用于授权验证的标识。
在 WebSphere Application Server V6
中,该标识可以被鉴别为当前安全上下文的运行方式(调用)标识。例如,Web Service 网关使用安全方法(如密码认证)来对请求方进行验证,然
后仅将请求者标识发送到后端服务器。您还可以将标识声明用于与另一个 Web Service 安全性实现的互操作性。
使用可插入令牌框架
结构化信息标准促进组织(OASIS)Web Service 安全性 V1.0 规范定义一般机制以使安全性令牌与 SOAP 消息关联。在 WebSphere Application Server V6
中,可插入令牌框架已增强为能够处理这种灵活机制。下图显示此可插入框架。

以下术语用于上图中:
- TokenGenerator
- 令牌生成者(即 com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent Java 接口)负责执行下列操作:
- 将令牌编组到 SOAP 消息的正确的 XML 说明中。在此情况下,编组是通过网络传输令牌前将其转换为标
准格式的进程。
- 将令牌设置为本地 JAAS 主体集。
- 生成基于密钥信息类型的正确令牌标识。
令牌生成者通过调用 CallbackHandler 或
javax.security.auth.callback.CallbackHandler Java 接口来获取令牌。将使用 javax.security.auth.callback.Callback Java 接口来将信息从回调处理程序传递至令牌生成者。
- CallbackHandler
- 回调处理程序(即 javax.security.auth.callback.CallbackHandler Java 接口)负责通过使用某种方法(如 GUI 提示、标准输入提示以及与外部令牌服务通信等等)来获取令牌。
- TokenConsumer
- 令牌使用者(即 com.ibm.wsspi.wssecurity.token.TokenConsumerComponent Java 接口)负责执行下列操作:
- 取消编组 SOAP 消息中来自 XML 格式的令牌。在此情况下,取消编组是将令牌从标准网络格式转换为本地或本机格式的进程。
- 调用 JAAS 登录配置以验证令牌
- 将正确的 WSSToken(即 com.ibm.wsspi.wssecurity.auth.token.WSSToken Java 抽象类)设置为本地 JAAS 主体。
在 Web Service 安全性处理的最后一个阶段,将使用本地 JAAS 主体内容来创建 WebSphere 凭证和主体。基于本地 JAAS 主体集的内容创建 Caller 主体集。
- JAAS 登录配置
- JAAS 登录配置负责验证令牌。验证过程可能包括调用 WebSphere Application Server 认证模块或调用第三方令牌服务。
签署或加密具有定制令牌的数据
密钥定位器(即 com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java 接口)已增强为支持规范灵活性。密钥定位器负责查找密
钥。将本地 JAAS 主体集传递到上下文中的 KeyLocator.getKey() 方法。密钥定位器实现可以从令牌派生密
钥(此令牌由令牌生成者或令牌使用者创建)以签署消息、验证消息中的签名、加密消息或解密消息。
要点: com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java 接口与 WebSphere Application Server V5.x
中的版本不同。建议不要使用 V5.x 中的 com.ibm.wsspi.wssecurity.config.KeyLocator
接口。不存在从 V5.x 到 V6 的密钥定位器的自动迁移。必须将 V5.x 密钥定位器实现的源代码迁移到 V6 的密钥定位器编程模型。
签署或加密任何 XML 元素
部署描述符支持用于选择要签署或加密哪个 XML 元素的 XPath 表达式。但是,当签署 SOAP 包络、SOAP 头或 Web Service 安全性头时,将使用包络签名。
支持 LTPA
在 Web Service 安全性中支持轻量级第三方认证(LTPA)作为二进制安全性令牌。令牌类型为 http://www.ibm.com/websphere/appserver/tokentype/5.0.2/LTPA。
扩展对时间戳记的支持
除了 Web Service 安全性头外,在签署进程期间您可
以将时间戳记插入到其他元素中。此时间戳记提供用于将时间限制添加到元素的机制。但是,此支持是 WebSphere Application Server V6
的扩展。其他供应商实现可能无法使用在消息中插入了其他时间戳记的情况下生成的消息。
扩展对现时标志的支持
除了用户名令牌外,您可以将现时标志(随机生成的值)插入到其他元素中。此现时标志用于减少重放攻击的机会。但是,此支持是 WebSphere Application Server V6 的扩展。其他供应商实现可能无法使用在除用户名令牌以外的元素中插入了现时标志的消息。
支持分布式现时标志高速缓存
分布式现时标志高速缓存是 WebSphere Application Server V6 中的 Web Service
的一项新功能,它使您能够在集群中的服务器之间复制现时标志数据。例如,在集群 C 中可以具有应用程序服务器 A 和应用程序服务器 B。如果应用程序服务器 A 接受具有值 X 的现时标志,且当应用程序服务器
B 在指定的时间段内接收具有同一值的现时标志时,则应用程序服务器 B 抛出 SoapSecurityException。但是,如果应用程序服务器 B 接收值为 Y 的另一个的现时标志,则它不会抛出异常,但会高速缓存现时标志并将它复制到同一集群的其他应用程序服务器中。
要点: 分布式现时标志高速缓存功能使用 WebSphere Application Server 分布式复制服务(DRS)。将本地高速缓存中的数据
推送到同一复制域的其他服务器中的高速缓存。此复制是进程外调用,而且在某些情况下是远程调用。因此,当更新集群的每个应用程序服
务器中高速缓存的内容时,在复制中可能存在延迟。此延迟可能是由于网络流量、网络工作负载、机器工作负载等等引起的。
高速缓存 X.509 证书
缺省情况下,WebSphere Application Server V6
对它接收到的 X.509 证书进行高速缓存以避免进行证书路径验证,从而提高性能。但是,此更改可能导致出现安全漏洞。您可以使用以下步骤来禁用 X.509 证书高速缓存:
在服务器级别上:
- 单击服务器 > 应用程序服务器 > server_name。
- 在“安全性”下,单击 Web Service:Web Service 安全性的缺省绑定。
- 在“其他属性”下面,单击属性 > 新建。
- 在“属性名”字段中,输入 com.ibm.ws.wssecurity.config.token.certificate.useCache。
- 在“属性值”字段中,输入 false。
为证书撤销列表提供支持
WebSphere Application Server V6
中的证书撤销列表(CRL)用来对证书路径验证进行增强。您可以在用于验证的集合证书库中指定 CRL。您还可以使用 PKCS#7 编码来对 X.509 令牌中的 CRL 进行编码。但是,WebSphere Application Server V6 在 X.509 令牌中不支持 X509PKIPathv1 CRL
编码。
要点: PKCS#7 编码仅与 IBM® 证书路径(IBM CertPath)提供程序一起进行了测试。其他证书路径提供程序不支持此编码。