如何从SAML消息字符串构造SAMLObject?

时间:2018-03-20 03:15:55

标签: saml opensaml

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

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用UnmarshallerFactory手动执行此操作,以获取可用于从XML元素解析XMLObject的SAML消息类型的Unmarshaller。像这样的事情

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对象转换为文本并发送消息的签名。

答案 1 :(得分:0)

我最终找到了解决方案:

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);