我最近将 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)
调用代码:
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);
}
}
最佳答案
我注意到,如果您不初始化(“ Bootstrap ”)SAML 配置,当您尝试构建 SAML 时,您会得到一个 NullPointerException(我可能会补充说,这毫无帮助)。
import org.opensaml.DefaultBootstrap;
import org.opensaml.xml.ConfigurationException;
try {
DefaultBootstrap.bootstrap();
}
catch (ConfigurationException ce) {
}
上面只是一小段代码来说明我在说什么。您是否忘记引导配置?这必须在你做任何事情之前完成。
关于java - SAML 编码 opensaml 和 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27707071/