错误:
intent.putExtra("tasks", tasks);
我的Java代码
我的Pom
Exception in thread "main" org.opensaml.xml.io.UnmarshallingException: the assertion does not appear to be encrypted
at AssertionDecrypter.unmarshallEncryptedAssertion(AssertionDecrypter.java:162)
at AssertionDecrypter.decryptAssertion(AssertionDecrypter.java:119)
at AssertionDecrypter.<init>(AssertionDecrypter.java:67)
at Saml2AssertionEncoding.main(Saml2AssertionEncoding.java:112)
Caused by: java.lang.ClassCastException: org.opensaml.saml1.core.impl.ResponseImpl cannot be cast to org.opensaml.saml2.core.EncryptedAssertion
at AssertionDecrypter.unmarshallEncryptedAssertion(AssertionDecrypter.java:157)
... 3 more
答案 0 :(得分:0)
您似乎需要调试加密的XML元素。你能检查document.getDocumentElements()
的内容是否正确?
我猜它是空的还是空的。从上面的函数成功获取原始XML元素后,您可以将XML解密为纯文本。例如,此网站SAML Assertion Decryption - SAML Decrypt XML Tool - Decrypt SAML Response
答案 1 :(得分:0)
看起来你不小心试图解密响应对象而不是包含断言。你应该做
Response response = unmarshaller.unmarshall(...);
return (EncryptedAssertion) response.getEncryptedAssertions().get(0)
前提是您知道响应中只发送了一个断言。
但是,您似乎收到了SAML 1响应消息,而不是SAML 2。 我不是SAML 1的专家,但似乎不支持encryptet断言。
首先将protocoll版本与发送消息的版本一起排序,然后确保返回加密的断言而不是响应对象。