【发布时间】:2018-03-20 03:15:54
【问题描述】:
我需要从 SAML 消息字符串构造 SAMLObject 的实例。在查看了 OpenSAML API 之后,我想不出它是如何完成的。
有什么建议吗?
【问题讨论】:
我需要从 SAML 消息字符串构造 SAMLObject 的实例。在查看了 OpenSAML API 之后,我想不出它是如何完成的。
有什么建议吗?
【问题讨论】:
我最终想出了一个解决方案:
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);
【讨论】:
您可以手动执行此操作,方法是使用 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 对象转换为文本并发送消息。
【讨论】: