一段时间以来,我一直在反对这一点,并且开始取得进展。但是,我在将 SAML 2 断言(在 XML 中)的字符串表示形式转换为断言对象时遇到了一些麻烦。
看起来我得到了一个org.w3c.dom.Document
带有适当数据的有效数据,而且我似乎SAMLObjectBuilder<Assertion>
从 builder factory 得到了一个有效数据,但是当我尝试将它们放在一起时,我得到的只是一个空白断言;主题、发行者、发行时间等都是null
,尽管它们在 XML 中明确设置。
有谁看到我做错了什么,并可以提出解决方案?
Document doc = loadXMLFromString(saml);
XMLObjectBuilderFactory builderFactory = Configuration.getBuilderFactory();
SAMLObjectBuilder<Assertion> assertionBuilder =
(SAMLObjectBuilder<Assertion>)
builderFactory.getBuilder(Assertion.DEFAULT_ELEMENT_NAME);
Assertion assertion = assertionBuilder.buildObject(doc.getDocumentElement());
String nameID = assertion.getSubject().getNameID().getValue();
在 nameID 赋值时,assertion.getSubject()
返回null
,表达式的其余部分失败。
我使用的示例是来自第 10 页 sstc-saml-tech-overview-2.0-draft-03 的完整 XML。
上面的函数loadXMLFromString()
主要是从 In Java 中借来的,如何将 XML 解析为字符串而不是文件?