由于我从Java 7迁移到Java 8,所以我从xmlsec 1.2.0更新到了2.0.4。
现在,我遇到的问题是方法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);
感谢您提供的任何帮助。
答案 0 :(得分:0)
应该可以替换
Constants.setSignatureSpecNSprefix("");
使用
ElementProxy.setDefaultPrefix(Constants.SignatureSpecNS, "");
并获得相同的结果。