我需要从SAML消息字符串构造一个SAMLObject实例。在看了OpenSAML API之后,我无法想象它是如何完成的。
有什么建议吗?
答案 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);