【发布时间】:2023-02-18 16:02:38
【问题描述】:
我正在尝试 1) 计算 XML 字符串的数字签名,2) 将 XML 字符串解组为 Java 对象,3) 将对象编组回 XML 字符串,以及 4) 重新计算签名,并根据步骤 1 中的签名。
问题是名称空间前缀通常在往返过程中发生变化(步骤 2-3),因此我需要一种方法在往返前后对它们进行标准化。否则,数字签名(步骤 1 和 4)显然不会匹配。
我想我需要类似的东西PrefixRewrite="顺序"在 https://www.w3.org/TR/xml-c14n2/Overview_diff.html#sec-Example-PrefixRewriteSeq 的第 2.5.4 节中。我找到了一个 Python 库,据说它可以做到这一点 (https://github.com/dept2/c14n2py),但我似乎找不到具有该选项的 Java 库(org.apache.xml.security.c14n.Canonicalizer 没有它)。我还能够在我的编组器中对名称空间前缀进行硬编码,但这对我来说不是一个可接受的解决方案。
任何人都可以使用 PrefixRewrite="sequential" 选项推荐用于 XML 规范化的 Java 库吗?
谢谢!!
【问题讨论】:
-
是否应该使用
CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS而不是前缀重写? -
不幸的是,该选项不保留名称空间前缀。
标签: java xml xml-namespaces canonicalization