Создание утверждения OpenSAML из данного XML в Java - PullRequest
9 голосов
/ 12 января 2011

Я бьюсь головой об этом некоторое время и начинаю прогрессировать.Однако я столкнулся с некоторыми проблемами при преобразовании строкового представления утверждения 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, не используя оставшуюся часть выражения.

В качестве примера я использую полный XML из sstc-saml-tech-Overview-2.0-draft-03, стр. 10.

Функция loadXMLFromString() выше по большей части заимствована из В Java, как мне проанализировать XML как строку вместо файла?

1 Ответ

9 голосов
/ 12 января 2011

В случае, если кто-то еще сталкивается с той же проблемой и сталкивается с ней, вот ответ.

https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUsrManJavaCreateFromXML

Просто возьмите пример, не имеющий аналогов:

Затем замените ваш экземпляр Document на inCommonMDDoc и посмотрите на результат последнего вызова unmarshall().Обратите внимание, что unmarshall() возвращает Object, который вам нужно привести к соответствующему типу.Подсказка: вы можете использовать typeof, если вы не уверены, какой это тип, но следите за наследованием.

...