9

我在 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">

Unmarshallerreturn a null,你能帮我理解一下查找正确的标准Unmarshaller以及它在opensaml中是如何工作的吗?

4

2 回答 2

22

我发现没有解组器注册,因为库中没有初始化:

重要的一段代码:

// Initialize the library
DefaultBootstrap.bootstrap();
于 2014-08-01T06:13:44.280 回答
4

在 OpenSAML3 中,您必须首先确保将opensaml-saml-impl工件包含在您的依赖项中,因为所有编组器和解组器都在那里实现。

然后,正如@Goblins 和@Pegerto 指出的那样,您必须调用InitializationService.initialize(). 我发现这个链接对于在使用依赖注入时进行正确的初始化很有用https://github.com/apereo/cas/blob/master/support/cas-server-support-saml-core-api/src/main /java/org/apereo/cas/support/saml/OpenSamlConfigBean.java

于 2017-04-10T16:17:10.817 回答