Plataforma CGN Comunicaciones con terceros Fecha del Documento 07/10/2008 Versión 0.2
1 Tabla de Contenido Plataforma CGN 1 1 Tabla de Contenido 1 2 Histórico de Revisiones 2 3 Introducción 3 3.1 Objetivos. 3 3.2 Introducción. 3 4 Arquitectura 4 4.1 Comunicación con el CGN 4 4.2 Control de excepciones 5 4.3 Tratamiento de ficheros adjuntos 5 4.4 XML Schemas 5 4.5 Seguridad 6 5 Parámetros de comunicación 7 5.1 REQUEST dirigida al CGN 7 5.2 REPLY del CGN 7 Anexo 8 Comunicaciones con terceros Página 1 de 9
2 Histórico de Revisiones Versión Fecha Detalles 0.1 10/04/2007 Creado por Arquitectura 0.2 07/10/2008 Modificado por Arquitectura Comunicaciones con terceros Página 2 de 9
3 Introducción 3.1 Objetivos. El objetivo de este documento es facilitar el intercambio técnico de información entre el Consejo General del Notariado (CGN) y las posibles entidades externas, a la hora de establecer y acordar el sistema de comunicación entre sus respectivas plataformas informáticas. 3.2 Introducción. En este documento se recogen las directivas de uso recomendado por el CGN en cuanto a los parámetros especificados en la comunicación de los mensajes recibidos por el CGN, así como en cuanto al contenido de los mensajes y el protocolo de comunicación establecido. Comunicaciones con terceros Página 3 de 9
4 Arquitectura 4.1 Comunicación con el CGN La comunicación con el CGN se efectuará mediante el protocolo SOAP sobre HTTP (Protocolo de comunicación basado en XML y formato codificado para la comunicación entre aplicaciones). http://www.w3.org/tr/soap. El tipo de comunicación es Message (Permite recibir y devolver XML arbitrario en el contenido del SOAP, sin necesidad de mapeos en la invocación de métodos) Se admiten las versiones SOAP 1.1 y SOAP 1.2 Adjuntamos el fichero WSDL, que especifica el formato de la transacción en el Anexo Como se puede ver, están definidas dos partes claramente diferenciadas. Una cabecera y un cuerpo o contenido. En la cabecera estarían los datos para la validación del mensaje y en el contenido vendrá el XML del mensaje propiamente dicho. Cabecera del mensaje: TIMESTAMP: TimeStamp en que se envía el mensaje TIPO_MSJ: Si se trata de una petición será 1 si se trata de la respuesta, será 2 EMISOR: Código de la entidad que envía el mensaje. RECEP: Este dato está fijado y siempre será CGN SERVICIO: Código del servicio al que se envía el mensaje XML. Comunicaciones con terceros Página 4 de 9
4.2 Control de excepciones Se establecen dos tipos de excepciones: - Las excepciones SOAP que se lanzarán en caso que se produzca una excepción relacionada con el protocolo de entrada, sea un tema de validación o de formato. Código Descripción 01 El servicio no responde.(no se recibe respuesta) 02 El formato del XML no es correcto. No cumple las especificaciones de este documento. 03 El servicio no funciona correctamente, 04 La cabecera del mensaje no tiene el formato correcto(no viene con los parámetros o el formato definido en el WSDL) 05 El Servicio solicitado no está disponible en estos momentos 06 Error no controlado dado por el servicio 07 No está autorizado(los datos de autenticación de la cabecera no son correctos) - Las excepciones del servicio, vendrán en el propio mensaje de respuesta. 4.3 Tratamiento de ficheros adjuntos Admite varias especificaciones para enviar y recibir mensajes SOAP con ficheros adjuntos. Actualmente soporta la siguientes especificaciones: SwA(SOAP with Attachmments) y DIME (Direct Internet Message Encapsulation). En un futuro, soportará MTOM (Message Transmisión Optimization Mechanism). No es posible enviar ficheros adjuntos solamente. Es necesario enviar una cabecera y un contenido SOAP. 4.4 XML Schemas Cada uno de los diferentes mensajes XML definidos en la mensajería, tanto de REQUEST como REPLY entre el CGN y el entidad externa, deben de ser acordes a un XML Schema. Cada uno de los mensajes intercambiados en la comunicación entre los sistemas será validado contra el XML Schema definido para el servicio al que esté asociado. Comunicaciones con terceros Página 5 de 9
4.5 Seguridad 1.- Cifrado de los mensajes La comunicación entre ambos sistemas será cifrada mediante SSL v3 de 128 bits en los dos sentidos 2.- Línea punto a punto La comunicación entre ambos sistemas se realiza a través de una línea punto a punto que asegura la privacidad de la comunicación y el reconocimiento de los servidores de origen y destino. 3.- Emisor reconocido por el CGN El código del emisor, debe ser reconocido como válido por parte del CGN. 4.- Firma digital Admite firma digital mediante el protocolo estándar de OASIS Web Services Security (WS-Security). El mensaje debe ir firmado con un certificado de confianza que acepte ANCERT. Comunicaciones con terceros Página 6 de 9
5 Parámetros de comunicación 5.1 REQUEST dirigida al CGN - PROTOCOLO SOAP 1.1/1.2 - URL de entrada entorno integración https://test.e-notario.notariado.org/servicedispatcher/services/servicedispatcher - URL de entrada entorno producción https://e-notario.notariado.org/servicedispatcher/services/servicedispatcher Deberá rellenarse la cabecera con los datos correspondientes y en el cuerpo se enviará el documento XML especificado de acuerdo con el XML Schema del servicio solicitado. Este XML, vendrá contenido dentro de este elemento: - CODIFICACIÓN Aunque el protocolo SOAP, solo admite UTF-8 o UTF-16, ésta es la codificación del envoltorio, el XML específico para el servicio vendrá en la codificación específica del servicio correspondiente. Nota: El documento XML especificado, puede enviarse mediante un fichero adjunto, pero entonces, en el cuerpo de mensaje SOAP, deberá enviarse contenido dentro del elemento anteriormente expuesto, el siguiente nodo: <ATTACHMENT/> 5.2 REPLY del CGN Los datos de la cabecera serán los mismos que en el REQUEST, salvo que el elemento TIPO_MSG, estará con el valor 2. La respuesta XML del servicio, se enviará dentro del nodo: Se corresponderá con el schema de respuesta especificado en el servicio correspondiente Comunicaciones con terceros Página 7 de 9
Anexo <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace="http://inti.notariado.org/xml" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://inti.notariado.org/xml" xmlns:intf="http://inti.notariado.org/xml" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <wsdl:types> <xsd:schema targetnamespace="http://inti.notariado.org/xml" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns="http://inti.notariado.org/xml" elementformdefault="qualified" attributeformdefault="unqualified"> <xsd:element name="service_dispatcher"> <xsd:complextype> <xsd:sequence> <xsd:element name="timestamp" type="xsd:datetime"> <xsd:annotation> <xsd:documentation>timestamping sobre el envio del mensaje (AAAA-MM- DDThh:mm:ss)</xsd:documentation> </xsd:annotation> <xsd:element name="tipo_msj" type="tipo_mensajetype"> <xsd:annotation> <xsd:documentation>tipo de mensaje ( "1" Petición, "2" Respuesta)</xsd:documentation> </xsd:annotation> <xsd:element name="emisor" type="xsd:string"> <xsd:annotation> <xsd:documentation>entidad emisora del mensaje (Código de la entidad)</xsd:documentation> </xsd:annotation> <xsd:element name="recep" type="xsd:string" fixed="cgn"> <xsd:annotation> <xsd:documentation>entidad receptora del mensaje ("CGN" Código del CGN)</xsd:documentation> </xsd:annotation> <xsd:element name="servicio" type="xsd:string"> <xsd:annotation> <xsd:documentation>código del servicio</xsd:documentation> </xsd:annotation> </xsd:sequence> </xsd:complextype> <xsd:simpletype name="tipo_mensajetype"> <xsd:restriction base="xsd:byte"> <xsd:enumeration value="1"/> <xsd:enumeration value="2"/> </xsd:restriction> </xsd:simpletype> <xsd:element name="service_dispatcher_request"> <xsd:complextype> <xsd:sequence> <xsd:any namespace="##any" processcontents="lax"/> </xsd:sequence> </xsd:complextype> <xsd:element name="service_dispatcher_response"> <xsd:complextype> Comunicaciones con terceros Página 8 de 9
<xsd:sequence> <xsd:any namespace="##any" processcontents="lax"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="servicedispatcherexception"> <xsd:sequence> <xsd:element name="info" type="xsd:string" nillable="true"/> </xsd:sequence> </xsd:complextype> <xsd:element name="fault" type="servicedispatcherexception"/> </xsd:schema> </wsdl:types> <wsdl:message name="servicedispatcherexception"> <wsdl:part element="impl:fault" name="fault"/> </wsdl:message> <wsdl:message name="processresponse"> <wsdl:part element="impl:service_dispatcher_response" name="processreturn"/> </wsdl:message> <wsdl:message name="processrequest"> <wsdl:part element="impl:service_dispatcher_request" name="part"/> <wsdl:part name="request_header" element="intf:service_dispatcher"/> </wsdl:message> <wsdl:porttype name="servicedispatcher"> <wsdl:operation name="process"> <wsdl:input message="impl:processrequest" name="processrequest"/> <wsdl:output message="impl:processresponse" name="processresponse"/> <wsdl:fault message="impl:servicedispatcherexception" name="servicedispatcherexception"/> </wsdl:operation> </wsdl:porttype> <wsdl:binding name="servicedispatchersoapbinding" type="impl:servicedispatcher"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="process"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="processrequest"> <wsdlsoap:header message="intf:processrequest" part="request_header" use="literal"/> <wsdlsoap:body use="literal" parts="part"/> </wsdl:input> <wsdl:output name="processresponse"> <wsdlsoap:body use="literal"/> </wsdl:output> <wsdl:fault name="servicedispatcherexception"> <wsdlsoap:fault name="servicedispatcherexception" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="servicedispatcherservice"> <wsdl:port binding="impl:servicedispatchersoapbinding" name="servicedispatcher"> <wsdlsoap:address location="http:// e-notario.notariado.org /servicedispatcher/services/servicedispatcher"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Comunicaciones con terceros Página 9 de 9