【问题标题】:SAML marshalling opensaml and javaSAML 编组 opensaml 和 java
【发布时间】:2014-12-30 14:18:50
【问题描述】:

我最近将 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);
        }
     }

【问题讨论】:

    标签: java saml-2.0 opensaml


    【解决方案1】:

    我注意到,如果您不初始化(“引导”)SAML 配置,那么当您尝试构建 SAML 时,您会收到 NullPointerException(我可能会补充一点,这很没有帮助)。

    import org.opensaml.DefaultBootstrap;
    import org.opensaml.xml.ConfigurationException;
    
    try {
        DefaultBootstrap.bootstrap();
    }
    catch (ConfigurationException ce) {
    }
    

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

    【讨论】:

    • 成功了。但是你能告诉我 DefaultBootstrap.bootstrap(); 是什么吗?究竟是什么?这是在 2.5.3 版本的 opensaml 之后引入的吗?还是 1.3.0 的 xmltooling?谢谢。
    • 老实说,我不知道它的作用细节。我想我们必须查看 OpenSAML 的源文件。我在 9 月之前从未使用过 SAML;我所知道的是,在某处我了解到您必须调用该方法。困扰我的是 NullPointerException 是一个 API copout。确实应该有一个更具描述性的错误。创建一个 SAMLConfigurationException 并将其扔到某个地方会杀死他们吗?无论如何,很高兴能帮上忙!
    • DefaultBootstrap 类的源代码可以在下面的 URL 中找到。这可能会提示引导方法的作用。 grepcode.com/file/repo1.maven.org/maven2/org.opensaml/opensaml/…
    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2018-09-26
    • 2015-09-12
    • 1970-01-01
    • 2019-11-15
    • 2016-09-01
    相关资源
    最近更新 更多