Мне нужно протестировать реализацию поставщика услуг, и мы используем opensaml. Я хочу изменить данный ответ saml и выполнить перестановку элементов утверждения, добавить больше утверждений и так далее. Я смог охватить некоторые случаи, используя сам метод opensaml, например, getassertions для объекта ответа saml. Но я вижу, что если я хочу перемещать элементы или выполнять более сложные манипуляции, мне нужно будет играть с ответом как с документом dom. Предоставляет ли opensaml такую функциональность? Если нет, как я могу создать закодированный ответ из модифицированного xml? Спасибо.
Opensaml - подделать ответ saml для тестирования
Ответы (1)
Если вы хотите манипулировать XML таким образом, который не соответствует стандарту SAML, вы не можете использовать OpenSAML, это подразумевается под «перемещением элементов». В этом случае я бы попытался вручную создать XML, а затем написать ручной кодировщик на основе информации из спецификации SAML.
person
Stefan Rasmusson
schedule
09.11.2017
И просто хочу отметить, что некоторые элементы нельзя просто перемещать. Спецификацию SAML не так просто читать, и кажется, что в ней нет порядка элементов, но в некоторых случаях он есть. Вот почему как правило при создании интеграции лучше использовать проверенную и протестированную платформу, а не развертывать свою собственную с нуля.
- person Andrew K.; 10.11.2017
Большое спасибо. Мне нужно сделать это для целей тестирования.
- person user1343454; 11.11.2017
В любом случае, как только OpenSaml создает действительный ответ в моем макете (объект Response), я нашел функцию getDom(), которая позволяет мне затем манипулировать сообщением. Да, тогда я использовал свой кодировщик для его кодирования.
- person user1343454; 11.11.2017
В этом примере я делаю: 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