xjc 및 wsimport 도구를 사용하여 클래스를 생성했습니다. 나는 필요한 모든 속성과 요소를 가진 Object를 가지고있다. 내가 보낼 데이터의 부호를 포함해야하는 SignatureType 객체가 있습니다.SOAP 요청에 서명하는 중 오류가 발생했습니다. 무결성 손실
내 루트 개체는 다음과 같습니다
는 내가 뭘 과정은@XmlRootElement(name = "MensajePesadoFirmadoTipo")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MensajePesadoFirmadoTipo", propOrder = {
"signature"
})
public class MensajePesadoFirmadoTipo
extends MensajePesadoTipo
{
@XmlElement(name = "Signature", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
protected SignatureType signature;
...
: SignatureType 제외 MensajePesadoFirmadoTipo의 모든 정보를 입력합니다. 다음으로 XML에 unmarshall하고 Java XMl Signature API를 사용합니다. 그런 다음 마샬을 다시 호출하고 WS를 호출합니다.
서명 된 XML 때문에 무결성 문제가 있습니다. WS를 호출하기 전에 마샬링 할 때 동일하지 않습니다.
XML 서명 (확인 서명) : MARSHAL 후에 XML을 인한
<ns1:MensajePesadoFirmadoTipo xmlns:ns1="urn:correos.es:ape.sne.datos.1.0" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" modalidad="1" ns1:idRef="idRef" ns1:idUnico="idUnico" tipo="NOTIFICACION">
...
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature></ns1:MensajePesadoFirmadoTipo>
(무결성 문제가 드 XML은 변화가) :
<ns1:MensajePesadoFirmadoTipo xmlns:ns1="urn:correos.es:ape.sne.datos.1.0" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" modalidad="1" ns1:idRef="idRef" tipo="NOTIFICACION" ns1:idUnico="idUnico">
...
<ns2:Signature>
...
</ns2:Signature>
</ns1:MensajePesadoFirmadoTipo>
어떻게이 과정을 확인 할 수 있습니다 ?? 도와주세요!!!
감사합니다.
그러나 문제는 무엇입니까? 두 경우 모두 네임 스페이스 ds와 ns2가 정의되어 있으므로 독자 (또는 플랫폼)가 standar xml 파서를 사용할 경우 아무런 문제가 없습니다. – fGo
서명 된 XML과 최종 XML은 동일하지 않으므로 서버에서 오류가 발생합니다 디지털 서명. – amartira