我从xmlsec 1.2.0更新到2.0.4,因为我正在从Java 7迁移到Java 8。
现在,我遇到的问题是该方法setSignatureSpecNSprefix
从org.apache.xml.security.utils.Constants
中删除。
我找不到任何文档告诉我如何替换它或如何绕过它。
我已经在邮件列表和 Apache 的 JIRA 中问过,但到目前为止还没有运气。
在我的代码中,我曾经做过:
import org.apache.xml.security.utils.Constants;
...
protected final void sign(String signedElementID, Element signedElement)
throws XMLSecurityException {
// Setting some attributes for ID, AssertionID and ResponseID
// ...
// Here is where it blows up!!!
Constants.setSignatureSpecNSprefix("");
// The BaseURI is the URI that's used to prepend to relative URIs
String BaseURI = "http://someurl.com";
Document document = signedElement.getOwnerDocument();
// It shouldn't affect the signature,
// because we don't have any relative URLs in the document
XMLSignature sig = new XMLSignature(doc,
BaseURI,
XMLSignature.ALGO_ID_SIGNATURE_RSA,
Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS);
感谢您提供的任何帮助。
据说,我们可以替换
Constants.setSignatureSpecNSprefix("");
跟
ElementProxy.setDefaultPrefix(Constants.SignatureSpecNS, "");
并获得相同的结果。