SAML 编组 opensaml 和 java

avi*_*van 2 java opensaml saml-2.0

我最近将 opensaml 依赖从 2.5.3 升级到 2.6.1,将 xmlutil 从 1.3.0 升级到 1.4.1。它编译时没有任何错误,但在运行应用程序时出现以下异常:

java.lang.NullPointerException
org.opensaml.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:84)
Run Code Online (Sandbox Code Playgroud)

调用代码:

final MarshallerFactory marshallerFac = SAMLUtil.getMarshallerFactory();
     final org.opensaml.xml.io.Marshaller authnStatementMarshaller = marshallerFac.getMarshaller(assertion);

     Element assertionElement = null;

     try {
        assertionElement = authnStatementMarshaller.marshall(assertion);
        try {
           // Sign assertion and query signature
           Signer.signObject(signature);
        }
        catch (final SignatureException e) {
           LOGGER.error("Fout opgetreden bij ondertekenen Assertion", e);
        }
     }
Run Code Online (Sandbox Code Playgroud)

Mar*_*rio 5

我注意到,如果您不初始化(“引导”)SAML 配置,当您尝试构建 SAML 时,您会收到 NullPointerException(我可能会补充说,这很无用)。

import org.opensaml.DefaultBootstrap;
import org.opensaml.xml.ConfigurationException;

try {
    DefaultBootstrap.bootstrap();
}
catch (ConfigurationException ce) {
}
Run Code Online (Sandbox Code Playgroud)

上面只是一段代码来说明我在说什么。您可能忘记引导配置了吗?这必须在你做任何事情之前完成。