首页 > 解决方案 > xmlsec 2.0.4:无法解决方法 setSignatureSpecNSprefix

问题描述

我从 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);

感谢您提供任何帮助。

标签: javaweblogicxmlsec

解决方案


假设我们可以替换

    Constants.setSignatureSpecNSprefix("");

    ElementProxy.setDefaultPrefix(Constants.SignatureSpecNS, "");

并获得相同的结果。


推荐阅读