Hace unos años la AEAT definió un Webservice para acceder a la información de certificados revocados de diferentes prestadores de servicios de certificación. Adjunto dicha especificación denominada YCAESTEC:
Especificaciones técnicas del servicio Web de actualización de certificados revocados
El servicio deberá estar basado en el protocolo SOAP 1.0. La A.E.A.T. accederá a este servicio como cliente solicitando los certificados revocados a partir de una fecha y hora. La autoridad de certificación devolverá una lista con los certificados revocados o el código que indique que no se han producido revocaciones desde la fecha y hora solicitada.
Descripción del servicio
Nombre
El nombre del servicio será serPubCR (Servicio Público de Certificados Revocados).
Tipos
Se define un nuevo tipo, ArrayOfArrayOf_xsd_string,
fuera de los definidos en la especificación de XML Schema, que SOAP adopta. Este tipo será un array de cadenas de dos dimensiones (xsd:Array[][]) la primera dimensión contendrá la fecha de revocación (Formato ISO-8601 con las restricciones de W3C descritas en http://www.w3.org/TR/NOTE-datetime y la granularidad 6 (fecha completa con horas, minutos, segundos y décimas de segundo, e.g 2003-05-15T23:11:32.45) y la segunda contendrá el número de serie del certificado revocado (Este número de serie se expresará en notación hexadecimal, no debiendo superar los 32 caracteres hexadecimales). El array deberá contener al final del mismo la cadena “FINAL” en las dos dimensiones.
Este tipo se utiliza en el mensaje de respuesta de la operación desdeFecha del servicio.
Mensajes
Estructura del mensaje de petición:
Nombre, desdeFechaRequest: Obtención de los certificados revocados a partir de una fecha, con dos parámetros:
In0 (xsd:string) : Autoridad de certificación a la que se envía el mensaje.
In1 (xsd:dateTime) : Fecha y hora a partir de la cual se desean los certificados revocados. Formato ISO-8601 con las restricciones de W3C descritas en http://www.w3.org/TR/NOTE-datetime y la granularidad 6 (fecha completa con horas, minutos, segundos y décimas de segundo, e.g 2003-05-15T23:11:32.45)
Estructura del mensaje de respuesta
Nombre, desdeFechaResponse: Consta de dos campos, uno con el nombre de la AC que emite la respuesta y otro con la lista de certificados revocados según el tipo ArrayOfArrayOf_xsd_string definido anteriormente.
Out0 (xsd:String) : Autoridad de certificación que devuelve la respuesta.
Out1 (ArrayOfArrayOf_xsd_string) : Lista de los certificados revocados desde la fecha y hora indicada en el mensaje de petición.
Operaciones
Este servicio se compone de una única operación.
Nombre desdeFecha: que se compone de los dos mensajes siguientes:
Mensaje de petición: desdeFechaRequest
Mensaje de respuesta: desdeFechaResponse
Enlaces
Incluir un elemento que indique el tipo de función (operación) a ejecutar y otros elementos para los parámetros de la función. Las respuestas a su vez deberán tener un elemento que emule la función de petición e incluya los valores de retorno. A su vez el mensaje SOAP se encapsulará en un mensaje HTTPS
Todas las operaciones tendrán como espacio de nombres ‘urn:dit:soapservices:serPubCR’ y utilizará la codificación SOAP http://schemas.xmlsoap.org/soap/encoding para llamadas remotas a procedimientos (RPC).
Ejemplos de mensajes SOAP
Mensajes de petición
<?xml version="1.0" encoding="IS0-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:desdeFecha xmlns:ns1="urn:dit:soapservices:serPubCR" xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <in0 xsi:type="xsd:string">CAGVA</in0> <in1 xsi:type="xsd:date">2003-05-15T23:00:03.23</in1> </ns1:desdeFecha> </SOAP-ENV:Body> </SOAP-env:Envelope> |
Mensaje de respuesta (Respuesta correcta)
<?xml version="1.0" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:desdeFechaResponse xmlns:ns1="urn:dit:soapservices:serPubCR" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return> <out0 xsi:type="soapenc:String>CAGVA</out0> <out1 xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[][193]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <item soapenc:arrayType="xsd:string[2]"> <item> 2003-06-16T09:29:27.00 </item> <item> 25B20688E </item> </item> <item soapenc:arrayType="xsd:string[2]"> <item> 2003-06-23T09:29:27.00 </item> <item> 25B206890 </item> </item> . . . <item soapenc:arrayType="xsd:string[2]"> <item> FINAL </item> <item> FINAL </item> </item> </out1> </return> </ns1:desdeFechaResponse> </SOAP-ENV:Body> </SOAP-env:Envelope> |
Respuesta errónea
<?xml version="1.0" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode> <faultstring xsi:type="xsd:string> Error en el formato de la fecha. Formato válido ISO-8601 </faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
Notas
1.- Documentos WDSL de descripción del servicio SOAP
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNameSpace="urn:dit:soapservices:serPubCR" xmlns:impl="urn:dit:soapservices:serPubCR" xmlns:soapenc="http://schemas.xmlsoap.org/soap/soapencoding/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wdslsoap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema/" targetNameSpace="urn:dit:soapservices:serPubCR"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="ArrayOfArrayOf_xsd_string"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][]" /> </restriction> </complexContent> </complexType> </schema> </wsdl:types> <wsdl:message name="desdeFechaRequest" > <wsdl:part name="in0" type="xsd:string" /> <wsdl:part name="in1" type="xsd:dateTime" /> </wsdl:message> <wsdl:message name="desdeFechaResponse"> <wsdl:part name="out0" type="xsd:string" /> <wsdl:part name="out1" type="impl:ArrayOfArrayOf_xsd_string" /> </wsdl:message> <wsdl:portType name="desdeFecha_servPubCR"> <operation name="desdeFecha"> <input name="desdeFechaRequest" message="impl:desdeFechaRequest" /> <output name="desdeFechaResponse" message="impl:desdeFechaResponse" /> </operation> </wsdl:portType> <wsdl:binding name="serPubCR_Bind" type="impl:desdeFecha_servPubCR"> <wdslsoap:binding stype="rpc" transport="http://schemas.xmlsoap.org/soap/https" /> <wsdl:operation name="desdeFecha" soapAction=""> <wsdl:input name="desdeFechaRequest"> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xlsoap.org/soap/encoding/" namespace="urn:dit:soapservices:serPubCR" /> </wsdl:input> <wsdl:output name="desdeFechaResponse"> <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xlsoap.org/soap/encoding/" namespace="urn:dit:soapservices:serPubCR" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="serPubCR"> <wsdl:port name="desdeFecha_servPubCR" binding="impl:serPubCR_Bind"> <wsdlsoap:address localtion="http://..../.../.../serPubCR" /> </wsdl:port> </wsdl:service> </wsdl:definitions> |
2.- Cabecera SOAPAction
No deberá ser obligatoria y si se utiliza, podrá ir a blanco.