Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从Shibboleth IdP读取SAML响应时出错_Java_Xml_Shibboleth_Opensaml - Fatal编程技术网

在java中从Shibboleth IdP读取SAML响应时出错

在java中从Shibboleth IdP读取SAML响应时出错,java,xml,shibboleth,opensaml,Java,Xml,Shibboleth,Opensaml,我正在尝试用java编写一个服务提供者。我正在使用Shibboleth IdP。我能够向IdP发送请求,当我尝试读取响应时,我收到错误: java.lang.IndexOutOfBoundsException:索引:0 位于java.util.Collections$EmptyList.get(未知源) 在org.opensaml.xml.util.LazyList.get(LazyList.java:93) 就在之前: Assertion-Assertion=response.getAsser

我正在尝试用java编写一个服务提供者。我正在使用Shibboleth IdP。我能够向IdP发送请求,当我尝试读取响应时,我收到错误:

java.lang.IndexOutOfBoundsException:索引:0
位于java.util.Collections$EmptyList.get(未知源)
在org.opensaml.xml.util.LazyList.get(LazyList.java:93)

就在之前:

Assertion-Assertion=response.getAssertions().get(0);
Map resutls=新的HashMap()


任何建议或指针都会很有帮助。

您如何阅读回复?你有
/secure
作为映射的servlet还是什么?嘿,Akshay。谢谢你的回复。让我解释一下我使用的流程。我有一个.jsp页面,上面有一个提交按钮。当我点击这个按钮时,页面被重定向到一个servlet,该servlet创建一个SAML请求并将其发送给IdP。IdP读取该请求并将SAML响应返回给同一个servlet。同一个servlet读取响应,并根据状态重定向到所需位置。经过一点调查,我发现Parentnode为null,而返回的XML文件中有子节点。但是当我在SAML跟踪插件中读取它时,它不是空的。因此,经过进一步的调查,我发现response.getEncryptedAssertion()工作正常。问题是断言是加密的,因此无法正常检索。首先需要解密响应。现在的问题是如何解密接收到的SAMLR响应。您可能需要解密密钥,可以是来自idp的,也可以是来自etc文件夹的sp.key和sp.cert。是的,我知道了。现在的问题是,互联网上有太多的方法来解密断言,我不知道该选择哪一种。我的钥匙在IdP里。如何使用它们?有有用的代码吗?特别是StaticKeyInfoCredentialResolver keyresolver=新的StaticKeyInfoCredentialResolver(您的凭证);在这里,我应该在您的凭证属性中添加什么。如果你能建议一些代码。再次感谢。:)