【问题标题】:How to construct a SAMLObject from a SAML message string?如何从 SAML 消息字符串构造 SAMLObject?
【发布时间】:2018-03-20 03:15:54
【问题描述】:

我需要从 SAML 消息字符串构造 SAMLObject 的实例。在查看了 OpenSAML API 之后,我想不出它是如何完成的。

有什么建议吗?

【问题讨论】:

    标签: saml opensaml


    【解决方案1】:

    我最终想出了一个解决方案:

    DefaultBootstrap.bootstrap();
    UnmarshallerFactory factory = Configuration.getUnmarshallerFactory();
    Element element = getElement(); // reading a XML file into a Input Stream
    Unmarshaller unmarshaller = factory.getUnmarshaller(element);
    XMLObject obj = unmarshaller.unmarshall(element);
    

    【讨论】:

      【解决方案2】:

      您可以手动执行此操作,方法是使用 UnmarshallerFactory 为您的 SAML 消息类型获取 Unmarshaller,该消息可用于从 XML 元素解析 XMLObject。像这样的东西

      factory = XMLObjectProviderRegistrySupport().getUnmarshallerFactory()
      unmarshaller = factory.getUnmarshaller(Assertion.DEFAULT_ELEMENT_NAME)
      XMLobject = unmarshaller.unmarshall(Element element)
      

      然后可以将此 XML 对象转换为实际的 SAML 对象,例如 Assertion 对象

      这至少可以在 opensaml 2 中完成。

      但是,您真正应该研究的是使用可用的编码器来处理低级消息解析和处理。

      这是我博客上关于如何使用编码器发送 authnrequst 的示例 http://blog.samlsecurity.com/2016/08/signing-and-sending-authnrequests-in.html

      编码器处理签名,将 SAML 对象转换为文本并发送消息。

      【讨论】:

      • 感谢您的意见。根据您的回答,我找出了代码。顺便说一句,您的代码示例中有一些语法错误。
      • 我在 OpenSAML 2 中找不到 XMLObjectProviderRegistrySupport 类。我添加了我的代码段来说明我是如何编写代码的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2011-08-18
      • 2013-02-04
      • 2019-05-13
      相关资源
      最近更新 更多