Web Service 安全性增强功能
WebSphere® Application Server 包括许多用于保护 Web Service 安全的增强功能。例如,WebSphere Application Server V6.1 Feature Pack for Web Services 和更高版本支持策略集以简化 Web Service 的安全性配置。
构建应用程序
WebSphere Application Server V8 使用的 Web Service 安全性运行时实现基于 Java™ API for XML Web Services (JAX-WS) 编程模型。JAX-WS 运行时基于 Apache Open Source Axis2,数据模型为 AXIOM。策略集取代部署描述符和绑定,用于配置。您可以使用 WebSphere Application Server 管理控制台编辑与策略集相关联的应用程序绑定文件。WebSphere Application Server V6.1 Feature Pack for Web Services 和更高版本支持 JAX-WS 运行时环境。
仍支持使用部署描述符和绑定的 JAX-RPC 编程模型。请阅读“使用消息级安全性确保 JAX-RPC Web Service 安全”主题,以了解更多信息。
使用策略集
使用策略集来简化 Web Service 服务质量配置。
策略集结合配置设置(包括那些用于传输和消息级别配置,例如 Web Services Address (WS-Addressing)、Web Services Reliable Messaging (WS-ReliableMessaging) 和 Web Service 安全性 (WS-Security),其中包括安全对话 (WS-SecureConversation)。
管理信任策略
Web Service 安全性 Trust (WS-Trust) 提供端点发出 Web Services Secure Conversation (WS-SecureConversation) 的安全上下文令牌的功能。令牌发出运行限制为安全上下文令牌。信任策略管理为每个信任服务定义一种策略,例如,发出、取消、验证和更新令牌。客户机的引导程序策略必须符合 WebSphere Application Server 信任服务策略。
保护基于会话的消息
Web Service 安全对话提供受保护的会话,用于长时间运行消息交换和利用均衡的密码算法。WS-SecureConversation 提供确保 基于会话消息交换模式(如 Web Services Security Reliable Messaging (WS-ReliableMessaging))的基本安全性。
更新消息级安全性
- 签名确认
- 加密头
签名确认增强了对 XML 数字签名安全的保护。<SignatureConfirmation> 元素表示响应程序已经处理了请求中的签名,签名确认确保预期的接收方确实处理了该签名。要正确地处理签名确认,发起方必须在请求生成处理期间保存签名,稍后必须检索签名以进行确认检查,即使对于 Web Service 和不同消息交换模式的无状态性质也是如此。通过配置策略来启用签名确认。
加密头元素提供了加密 SOAP 头的标准方法,有助于互操作性。如 SOAP 消息安全性规范中所定义,<EncryptedHeader> 元素指出必须保护特定的 SOAP 头(或头组)。加密 SOAP 头和部件有助于提供更安全的消息级安全性。EncryptedHeader 元素确保与 SOAP mustUnderstand 处理准则相符以及防止泄漏 SOAP 头块的属性上包含的信息。
使用身份断言
- 不具有密码的用户名令牌
- X.509 证书的 X.509 令牌
要获取更多关于身份断言的信息,请参阅“可信标识鉴别程序”主题。
签署或加密具有定制令牌的数据
对于 JAX-RPC 编程模型,增强密钥定位器或 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 及更高版本。
- JAAS CallbackHandler 和 JAAS 登录模块创建生成器端上的安全性令牌并确认或验证用户端的安全性令牌。
- 安全性令牌接口 (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) 表示安全性令牌,该安全性令牌具有获取身份、XML 格式和密钥的方法。
- 令牌生成者 (com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent)
- 令牌用户 (com.ibm.wsspi.wssecurity.token.TokenConsumerComponent)
- 密钥定位器 (com.ibm.wsspi.wssecurity.keyinfo.KeyLocator)
签署或加密任何 XML 元素
使用 XPath 表达式,选择要签名或加密的 XML 元素。但是,为 SOAP 包络、SOAP 头或 Web Service 安全性头签名时,使用包络签名。JAX-RPC Web Service 中,使用应用程序部署描述符指定 XPath 表达式。JAX-WS Web Service 中,在策略集的 WS-Security 策略中指定 XPath 表达式。
JAX-WS 编程模型使用策略集指示消息中应该应用安全性的部分。例如,使用 <Body> 声明来指示已对 SOAP 消息的主体进行签名或加密。另一示例是 <Header> 声明,这时需要指定要签名或加密的 SOAP 头的 QName。
对 SOAP 头进行签名或加密
OASIS Web Service 安全性 (WS-Security) V1.1 支持提供了对 SOAP 头进行签名或加密的标准方法。要签名或加密 SOAP 消息,请指定 QName,以选择 SOAP 消息的 SOAP 头中的头元素。
您可以使用管理控制台或使用 Web Service 安全性 API (WSS API),配置用于签名或加密的策略集。更多详细信息,请参阅“使用管理控制台确保消息部分安全”主题。
- 名称
- 此可选属性指示要受完整性保护的 SOAP 头的局部名。如果未指定此属性,那么将保护名称空间与 Namespace 属性相匹配的所有 SOAP 头。
- 名称空间
- 此必需属性指示要受完整性保护的 SOAP 头的名称空间。
- 名称
- 此可选属性指示要受机密性保护的 SOAP 头的局部名。如果未指定此属性,那么将保护名称空间与 Namespace 属性相匹配的所有 SOAP 头。
- 名称空间
- 此必需属性指示要受机密性保护的 SOAP 头的名称空间。
对于 Web Service 安全性 V1.0 行为,请在绑定的 EncryptionInfo 中指定 com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 属性值为 true。指定此属性将产生 <EncryptedData> 元素。
对于等价于版本低于 V7.0 的 WebSphere Application Server 版本的 Web Service 安全性 V1.1 行为,请对绑定中的 <encryptionInfo> 元素将 com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 属性的值指定为 true。如果指定此属性,那么 <EncryptedHeader> 元素会包括 wsu:Id 参数,而 <EncryptedData> 元素会省略该 Id 参数。只有在不需要符合 Basic Security Profile 1.1 时,才应该使用此属性,而且有必要将 <EncryptedHeader> 元素发送到使用 WebSphere Application Server V5.1 Feature Pack for Web Services 的客户机或服务器。
支持 LTPA
在 Web Service 安全性中支持轻量级第三方认证 (LTPA) 作为二进制安全性令牌。Web Service 安全性同时支持 LTPA (V1) 和 LTPA V2 令牌。WebSphere Application Server V7.0 和更高版本中支持比 LTPA V1 更安全的 LTPA V2 令牌。
扩展对时间戳记的支持
除了 Web Service 安全性头以外,在签名过程中您可以将时间戳记插入到其他元素中。此时间戳记提供用于将时间限制添加到元素的机制。此支持是对 WebSphere Application Server 的扩展。其他供应商实现可能无法使用生成时添加了在消息中插入的时间戳记的消息。
扩展对现时标志的支持
除了用户名令牌外,可以将现时标志(其是随机生成的值)插入到其他元素中。此现时标志用于减少重放攻击的机会。此支持是对 WebSphere Application Server 的扩展。其他供应商实现可能无法使用具有插入在元素而非用户名令牌中的现时标志 的消息。
支持分布式现时标志高速缓存
分布式现时标志高速缓存是 WebSphere Application Server V6 和更高版本中 Web Service 的新功能,使您能够复制集群中服务器之间的现时标志数据。例如,集群 C 中可能有应用程序服务器 A 和应用程序服务器 B。如果应用程序服务器 A 接受值为 X 的现时标志,那么应用程序服务器 B 在指定的时间段内接收到值相同的现时标志时,将产生 SoapSecurityException。
高速缓存 X.509 证书
缺省情况下,WebSphere Application Server 会对检索到的 X.509 证书进行高速缓存,以避免证书路径验证并改善其性能。但是,此更改可能导致出现安全隐患。可以执行以下步骤来禁用 X.509 证书高速缓存:
- 单击安全性 > Web Service。
- 在“其他属性”下面,单击属性 > 新建。
- 在“属性名”字段中,输入 com.ibm.ws.wssecurity.config.token.certificate.useCache。
- 在“属性值”字段中,输入 false。
- 单击服务器 > 应用程序服务器 > server_name。
- 在“安全性”下,单击 Web Service:Web Service 安全性的缺省绑定。
- 在“其他属性”下面,单击属性 > 新建。
- 在“属性名”字段中,输入 com.ibm.ws.wssecurity.config.token.certificate.useCache。
- 在“属性值”字段中,输入 false。