求推荐支持PrefixRewrite="sequential"的Java XML规范化库
针对XML往返处理(解组+编组)后命名空间前缀变化导致数字签名验证失败的问题,以下是几款支持W3C规范中PrefixRewrite="sequential"模式的Java库:
Apache Santuario XML Security Library
作为Apache官方的XML安全工具库,其2.3.x及以上版本已支持XML Canonicalization 2.0的完整特性,包括sequential前缀重写。你可以通过指定对应规范化算法的URI(如带注释的http://www.w3.org/2006/12/xml-c14n2#WithComments)并配置PrefixRewrite参数来启用该模式,确保签名前后的XML前缀标准化。Woodstox XML Processor
这是一款高性能的XML处理库,内置了符合W3C C14n2规范的规范化工具。通过配置WstxOutputProperties开启sequential前缀重写模式,在编组Java对象为XML时直接应用前缀标准化逻辑,从根源避免往返过程中的前缀不一致问题。Apache XMLBeans
除了XML与Java对象的绑定功能,XMLBeans还提供了内置的XML规范化模块。在编组时配置其规范化选项为PrefixRewrite="sequential",即可自动按顺序重命名命名空间前缀,保证往返后的XML结构与原始版本匹配,满足签名验证的要求。
注意事项
无论选择哪款库,都需要确保签名前和验证前对XML执行完全一致的规范化处理,而不是仅在编组后处理。优先选择维护活跃的库版本,避免使用停止更新的项目。
内容的提问来源于stack exchange,提问作者Boris

