Opensaml - подделать ответ saml для тестирования

Мне нужно протестировать реализацию поставщика услуг, и мы используем opensaml. Я хочу изменить данный ответ saml и выполнить перестановку элементов утверждения, добавить больше утверждений и так далее. Я смог охватить некоторые случаи, используя сам метод opensaml, например, getassertions для объекта ответа saml. Но я вижу, что если я хочу перемещать элементы или выполнять более сложные манипуляции, мне нужно будет играть с ответом как с документом dom. Предоставляет ли opensaml такую ​​функциональность? Если нет, как я могу создать закодированный ответ из модифицированного xml? Спасибо.


person user1343454    schedule 08.11.2017    source источник


Ответы (1)


Если вы хотите манипулировать XML таким образом, который не соответствует стандарту SAML, вы не можете использовать OpenSAML, это подразумевается под «перемещением элементов». В этом случае я бы попытался вручную создать XML, а затем написать ручной кодировщик на основе информации из спецификации SAML.

person Stefan Rasmusson    schedule 09.11.2017
comment
И просто хочу отметить, что некоторые элементы нельзя просто перемещать. Спецификацию SAML не так просто читать, и кажется, что в ней нет порядка элементов, но в некоторых случаях он есть. Вот почему как правило при создании интеграции лучше использовать проверенную и протестированную платформу, а не развертывать свою собственную с нуля. - person Andrew K.; 10.11.2017
comment
Большое спасибо. Мне нужно сделать это для целей тестирования. - person user1343454; 11.11.2017
comment
В любом случае, как только OpenSaml создает действительный ответ в моем макете (объект Response), я нашел функцию getDom(), которая позволяет мне затем манипулировать сообщением. Да, тогда я использовал свой кодировщик для его кодирования. - person user1343454; 11.11.2017
comment
В этом примере я делаю: legalUserSAMLResponse.getAssertions().clear(); легитимныйUserSAMLResponse.getAssertions().add(Assertion1); законныйUserSAMLResponse.getAssertions().add(Assertion2); org.w3c.dom.Element dom = LegalUserSAMLResponse.getDOM(); Элемент asse = (Элемент) dom.getElementsByTagName(saml2:Assertion).item(0); // java.lang.NullPointerException Element asse2 = (Element) dom.getElementsByTagName(saml2:Assertion).item(1); org.w3c.dom.Node sig = asse.getElementsByTagName(ds:Signature).item(0); asse.removeChild(sig); asse2.appendChild (подпись); - person user1343454; 11.11.2017