gpt4 book ai didi

javax.xml.crypto.URIReferenceException : Cannot resolve element with ID SAML-

转载 作者:行者123 更新时间:2023-11-30 06:20:13 25 4
gpt4 key购买 nike

我正在尝试使用 Java 解析带有签名的 SAML 响应。我遇到异常

javax.xml.crypto.URIReferenceException:  
com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException: Cannot
resolve element with ID SAML-

经查Java在1.7 u25版本之后有bug,引用如下

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7094155 .

谁能告诉我如何纠正这个错误,因为我正在使用 AWS Beanstalk(它只支持 1.7 u 25,也只支持 Linux。)

这是读取 SAML 和解析的起始代码,实际上我需要验证 SAML 和签名。

  ByteArrayInputStream bis = new ByteArrayInputStream(resp.getBytes());
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder docBuilder;


try {
docBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(bis);
Node nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS,"Signature").item(0);
.....

如有任何帮助,我们将不胜感激。

最佳答案

我认为您遇到了这个问题;

https://bugs.openjdk.java.net/browse/JDK-8017169

我通过做类似的事情来解决这个问题以验证 saml 响应

NodeList elList = this.document.getElementsByTagName("saml:Assertion");
if (elList != null && elList.getLength() > 0) {
Attr id = ((Element)elList.item(0)).getAttributeNode("ID");
IdResolver.registerElementById((Element)elList.item(0), id);
log.debug("registered id: " + id + " for element: " + (Element)elList.item(0));
}

就在验证之前。不过可能有更优雅的解决方案。

关于javax.xml.crypto.URIReferenceException : Cannot resolve element with ID SAML-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com