WS-Security 已知问题和变通方法
下列各项是 Apache CXF 开放式源代码服务框架中的 WS-Security 实现存在的问题。
- 如果 SupportingToken 正在加密但您已计划不加密任何内容,请尝试移除所有与加密相关的令牌断言以解决此问题。如果带有 SupportingToken 断言的 AsymmetricBinding 中没有 EncryptedParts 和 EncryptedElements,那么 SupportingToken 会意外加密。
- 使用包络签名变换的 XML 签名不起作用。不存在变通方法。
- 尽管支持 <wsdl:output> 中的 PolicyReference,但是将忽略 <wsdl:input> 中的 PolicyReference。如果您必须区分输入和输出中的 PolicyReference,变通方法是在绑定级别附加 PolicyReference,然后覆盖 <wsdl:output> 中的 PolicyReference。
- 不支持 sp:requireEmbeddedTokenReference 策略断言。
- 在 server.xml 文件的 wsSecurityProvider 或 wsSecurityClient 部分,如果 signatureProperties 元素中存在 org.apache.ws.security.crypto.merlin.truststore.* 属性,encrytpionProperties 元素中存在 org.apache.ws.security.crypto.merlin.keystore.* 属性,那么 encrytpionProperties 元素的 org.apache.ws.security.crypto.merlin.keystore.* 值将覆盖 signatureProperties 元素中的 org.apache.ws.security.crypto.merlin.truststore.* 属性。此行为意味着,已将您的加密密钥库用于签名信任库。变通方法是对加密信任库和签名信任库都使用同一密钥库;无法使用单独的密钥库。
- 不支持 X509PKIPathv1 和 PKCS#7 令牌类型。
- 在 WS-Security 策略中,仅当生成 X509 令牌时,才使用 X509Token 断言中的 Require* 断言。使用 X509 令牌时,并不强制使用这些断言。这些断言包括但不仅限于 RequireKeyIdentifierReference、RequireIssuerSerialReference 和 RequireThumbprintReference。
- 在 SymmetricBinding 断言中,SignatureToken 和 EncryptionToken 断言都不能指定。在 SymmetricBinding 断言中唯一可以使用的受支持断言是 ProtectionToken 断言。所指定的 ProtectionToken 同时用于签名和加密。
- WS-Security 策略中的 ProtectTokens 断言不受支持,将被忽略。
- WS-Security 策略中的 KeyValueToken 断言不受支持。
- EndorsingEncryptedSupportingTokens 或 SignedEndorsingEncryptedSupportingTokens 中的 X509Token 不受支持。
- Liberty 中的 WS-Security 支持 V1.1 规范,此规范与使用 V1.0 规范的之前版本兼容。这意味着,在 V1.0 中定义的 URI 和模式元素保持不变,而将对 V1.1 名称空间和 URI 定义新的模式元素和常量。
WS-Security 策略中的 WS-Security 选项和属性是对 wss10 断言或者 wss11 断言定义的。如果您必须配置策略以支持 WS-Security 1.1 属性,那么必须仅配置已经包括 wss10 断言的 wss11 策略断言,不得同时配置 wss11 和 wss10 策略断言。
包含 wss10 断言的 wss11 策略断言的示例包括但不仅限于 RequireSignatureConfirmation、MustSupportRefKeyIdentifier 和 MustSupportRefIssuerSerial。
- 无法同时为同一个服务配置 WS-Security 和 MTOM。如果使用 MTOM,而且也配置了 WS-Security,那么将无法正确地发送 SOAP 消息。用户必须选择是使用 MTOM 还是配置 WS-Security。如果需要 MTOM,那么必须将 WS-Security 策略从 WSDL 文件中移除才能禁用 WS-Security。
- 如果使用 Liberty 客户机和 WebSphere® Application Server 传统版提供者,并从提供者处接收到“CWWSS6001E: 未获取密钥对象。”响应,那么可通过 WebSphere Application Server 传统版 APAR PM88011 解决此问题。 此问题与同时包括主体的非对称数字签名和加密的配置特别相关。