【发布时间】:2011-06-07 18:16:00
【问题描述】:
我已经为此苦苦挣扎了一段时间,并且开始取得进展。但是,我在将 SAML 2 断言(在 XML 中)的字符串表示形式转换为断言对象时遇到了一些麻烦。
看起来我得到了一个带有适当数据的有效org.w3c.dom.Document,而且我似乎从构建器工厂得到了一个有效的SAMLObjectBuilder<Assertion>,但是当我尝试将它们放在一起时,我得到的只是一个空白断言;主题、发行者、发行时间等都是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,表达式的其余部分失败。
我使用的示例是来自 sstc-saml-tech-overview-2.0-draft-03,第 10 页的完整 XML。
上面的函数loadXMLFromString()多是借用In Java, how do I parse XML as a String instead of a file?
【问题讨论】:
-
我们不会在这里编辑带有
[SOLVED]的问题名称。如果您有答案,请在其左侧标上绿色勾号 - 您的问题才会被标记为“已解决”。 -
@marcog 我起初尝试过,但在 48 小时宽限期结束之前无法将我自己的答案标记为已接受,并且在我为解决方案所做的所有搜索中,我认为它是相关性足以留下问题而不是删除它。
-
很高兴您发布了一个自我回答。太多人只是走开。这样做的问题和答案都 +1!