我在opensaml2.6
运行此代码Element metadataRoot = document.getDocumentElement();
// Unmarshall
UnmarshallerFactory unmarshallerFactory = Configuration.getUnmarshallerFactory();
Unmarshaller unmarshaller = unmarshallerFactory.getUnmarshaller(metadataRoot);
if (unmarshaller == null) {
System.out.println("Error receiving unmarshaller for this document.");
return;
}
对于文件
<?xml version="1.0" encoding="UTF-8"?><saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
Unmarshaller
返回null
,您能帮我解决一下如何查找正确的Unmarshaller
及其在opensaml中的工作原理吗?
答案 0 :(得分:12)
我发现由于库中没有初始化,因此没有未经编号的注册:
重要的代码:
// Initialize the library
DefaultBootstrap.bootstrap();
答案 1 :(得分:1)
在OpenSAML3中,您必须首先确保在您的依赖项中包含opensaml-saml-impl
工件,因为所有marshallers和unmarshallers都在那里实现。
然后,正如@Goblins和@Pegerto指出的那样,你必须打电话给InitializationService.initialize()
。我发现这个链接对于在使用依赖注入https://github.com/apereo/cas/blob/master/support/cas-server-support-saml-core/src/main/java/org/apereo/cas/support/saml/OpenSamlConfigBean.java时进行正确的初始化很有用。