Guía Técnica Consumos de Servicios de Interoperabilidad usando protocolo SOAP Documento de Arquitectura Página 1 de 11
IDENTIFICACION Y CONTROL Título Autor Referencia/Asunto Ubicación Copia Electrónica Clasificación Detalle Pedro Carrasco Curín Documento de Arquitectura de la plataforma de interoperabilidad SIIS Sharepoint Institucional Confidencial CONTROL DE VERSIÓN Fecha Versión Autor Descripción 17-08-2017 1 Pedro Carrasco 1ra versión del documento. 21-09-2017 2 Pedro Carrasco Se añade endpoint productivo Internet. Se añade ejemplo de uso de credenciales asociadas al consumo. 04-10-2017 3 Pedro Carrasco Incorporación mecanismo de seguridad Firma y uso de certificados. APROBACIÓN DEL DOCUMENTO Nombre Persona Cargo Firma Fecha Marcelo Gonzalez Inostroza magonzalez@fonasa.gov.cl Director Proyecto SIIS Carlos Nuñez Contreras carlos.nunez_ext@fonasa.gov.cl Jefe de Proyecto Cuenta Médica Interoperable Alex Arevalo Vergara afarevalo@fonasa.gov.cl Jefe Proyecto Integraciones Proyecto SIIS Pedro Carrasco Curin pacarrasco@fonasa.gov.cl Arquitecto TI Documento de Arquitectura Página 2 de 11
Tabla de Contenido 1 Introducción... 4 1.1 Propósito... 4 1.2 Supuestos... 4 1.3 Ejemplos de Consumo... 5 1.3.1 Diccionario de Datos... 5 1.3.2 Llamadas de Pruebas... 5 2 Aspectos de Seguridad... 7 2.1 Aspectos Considerados... 7 2.1.1 Autenticación... 7 2.1.2 Firma Electrónica... 7 2.1.3 Autenticación Mutua... 8 3 Endpoint Publicado por Prestador y... 9 3.1 Caracteristicas del servicio... 9 3.1.1 Sincrónico... 9 3.1.2 Tamaño del mensaje... 9 3.1.3 Autenticación y Autorización... 9 3.1.4 Protección del Mensaje... 10 3.1.5 Codigos de Respuesta... 11 3.1.6 Insumo a... 11 Documento de Arquitectura Página 3 de 11
1 Introducción 1.1 Propósito El siguiente documento tiene por objetivo presentar una guía que indica a nivel de detalle técnico el consumo de un servicio web según los mecanismos y protocolos definidos en el proceso de la generación de la cuenta medica interoperable. 1.2 Supuestos Se asume que ya se han generado previamente: 1. Habilitar un canal de tipo HTTPS usando certificados digitales válidamente emitidos. 2. Habilitar un ambiente de QA a través de Internet. 3. Adquirir un certificado para firma digital simple, el mismo utilizado para facturación electrónica al SII. 4. Publicar por Internet servicios usando este protocolo. 5. Registrar el certificado de dentro de su plataforma de interoperabilidad. Documento de Arquitectura Página 4 de 11
1.3 Ejemplos de Consumo 1.3.1 Diccionario de Datos El diccionario de datos se encuentra descripto en la guía de implementación del siguiente link: http://cens.cl/wp/wp-content/uploads/2017/08/guia_de_implementacion_validacin_v3.0.pdf 1.3.2 Llamadas de Pruebas Endpoint Internet Pruebas https://wscs.fonasa.cl:8443/fonasasec/cuentamedica/fonasacuentamedicainteroperable?wsdl Endpoint Internet QA https://wsqa.fonasa.cl:8443/fonasasec/cuentamedica/fonasacuentamedicainteroperable?wsdl El servicio actualmente valida el token que acompaña al contenido de la invocación. 1.3.2.1 Request SOAP <soapenv:envelope xmlns:cuen="http://soa.fonasa.cl/mensajes/cuentamedicainteroperable" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:header> <wsse:security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <ds:signature Id="SIG-3AE3A5A98A87B6458E150723666260212" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#id-3AE3A5A98A87B6458E15072365645966"> <ds:transforms> <ds:transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="cuen" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:transform> </ds:transforms> <ds:digestmethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:digestvalue>18dibqz4yiwrn1vg1h9ovhglhbu=</ds:digestvalue> </ds:reference> </ds:signedinfo> <ds:signaturevalue>tnsfpw2wb6pyfwt2hunswl7arriecbq7zdbja8qa12nlg4zh5dgltkgd3/jc6oqbebnqyvm/vfgb B+RyzQhbFvejETD4vjSZKyM/Xnwti66cUePkQn2ANse0m4n+tIneP1G/emFMH+QQ2rFZCE3OEH1K M1vyCBelTuTrXA74upMZ/AvNEZHCc3rJ5YVFdweMMaCSMekc0rIjD6nhcvJM8zeU6vueXxKhRM2r loosirnf46rt0nnuxdrx2qxx8dkt/stekzmq4a14b/eaxgdyhtt2dz45a3r4ikwlc2g7kowd9eyq ZOlNLJZTHDFimmLzVA5b+7PH1q06H7FckKChaA==</ds:SignatureValue> <ds:keyinfo Id="KI-3AE3A5A98A87B6458E150723666260110"> <wsse:securitytokenreference wsu:id="str-3ae3a5a98a87b6458e150723666260111"> <ds:x509data> <ds:x509issuerserial> <ds:x509issuername>cn=pedro Carrasco,OU=Proyecto SIIS,O=Fondo Nacional de Salud,L=Santiago,ST=Chile,C=CL</ds:X509IssuerName> <ds:x509serialnumber>1507234293</ds:x509serialnumber> </ds:x509issuerserial> </ds:x509data> </wsse:securitytokenreference> </ds:keyinfo> </ds:signature> <wsse:usernametoken wsu:id="usernametoken-3ae3a5a98a87b6458e15072366626008"> <wsse:username>identificador_prestador</wsse:username> <wsse:password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile- 1.0#PasswordText">la_clave_del_prestaor</wsse:Password> <wsse:nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security- 1.0#Base64Binary">wnU4Oso3nOshtMriYk3rTQ==</wsse:Nonce> Documento de Arquitectura Página 5 de 11
<wsu:created>2017-10-05t20:51:02.599z</wsu:created> </wsse:usernametoken> </wsse:security> </soapenv:header> <soapenv:body wsu:id="id-3ae3a5a98a87b6458e15072365645966" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis- 200401-wss-wssecurity-utility-1.0.xsd"> <cns:mensajehl7request xmlns:cns="http://soa.fonasa.cl/mensajes/cuentamedicainteroperable"> <cuen:tramadatos xmlns:cuen="http://soa.fonasa.cl/mensajes/cuentamedicainteroperable">msh ^~\& SW_Clinica_el_Canelo 88345019- K^88345019-K^RUT SW_FONASA 0^61603000-0^RUT 20170824070500-0300 ADT^A01^ADT_A01 000001 P 2.5.1 EVN A01 20170824070500-0300 PID 497575^^^RegistroCivil^WP^^^^152&Chile&ISO3166-1 Bermudez^Jorge Serna PV1 1 49494 5231980-5 PR1 01 1 20170824070500-0300 IN1 1 96 01</cuen:tramaDatos> </cns:mensajehl7request> </soapenv:body> </soapenv:envelope> 1.3.2.2 Response SOAP <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cuen="http://soa.fonasa.cl/mensajes/cuentamedicainteroperable"> <soapenv:header /> <soapenv:body> <cuen:mensajehl7response> <cuen:tramadatos><![cdata[msh ^~\& FONASA^^ 0^61603000^RUT SW_RegistroAdministr^^ 983457658^887454533^RUT 20170901 ACK^A01^ACK 1025 P^ 2.5.1 ADT_A01 MSA AA 0001]]></cuen:tramaDatos> </cuen:mensajehl7response> </soapenv:body> </soapenv:envelope> Documento de Arquitectura Página 6 de 11
2 Aspectos de Seguridad Para el caso de integraciones mediante protocolo SOAP se utilizará el intercambio de certificados al momento de generar el request, además de la implementación de un canal seguro el cual encriptara todo el tiempo la mensajería intercambiada entre las partes. 2.1 Aspectos Considerados 2.1.1 Autenticación Cada invocación incluirá él envió de credenciales (usuario/contraseña) generadas por, enviados directamente en el encabezado SOAP (Header SOAP) con la implementación del Web Service Security (WSS). 2.1.2 Firma Electrónica Se utilizara el certificado de firma digital adquirido para firmar cada invocación realizada, enviados directamente en el encabezado SOAP (Header SOAP) con la implementación del Web Service Security (WSS). Documento de Arquitectura Página 7 de 11
2.1.3 Autenticación Mutua Se adjunta un almacen de certificados y firma para ejectuar durante este proceso de pruebas, el cual es de tipo PKCS12. El contenido del almacen es: 1. Firma electronica para prestador genérico (emitida por ). REQUERIDO PARA SOAP. 2. Certificado https generico producción. 3. Certificado https generico qa. Archivo Almacen: fonasa_llave_pruebas.pfx Clave Almacén: CMI2017 Clave Llave: CMI2017 Documento de Arquitectura Página 8 de 11
3 Endpoint Publicado por Prestador y Según el mecanismo definido para la interoperabilidad se requiere que el prestador publique un endpoint donde generara una llamada de vuelta con la información resultante de la tributación inicial de información, la implementación de este endpoint será obligatoria asi tambien la publicación por Internet del mismo. El endpoint publicado por tendrá las mismas caracteristicas del servicio con excepción del uso del Token en vez de la Basic Authentitation 3.1 Caracteristicas del servicio implemento una plataforma de interoperabilidad con un enfoque en el uso de estandares del sector salud y mecanismos de comunicación, para mantener una homologación de la mensajeria y comunicaciones el servicio de recepción de mensajeria debe estar alineado con el principio declarado anteriormente (uso de estandares). 3.1.1 Sincrónico El servicio publicado debe aceptar una invocación y debe retornar el estado de respuesta de la misma. 3.1.2 Tamaño del mensaje El mensaje de entrada y de salida no debe superar los 300 KB, en caso de superar este limite se generará el error 413 (ver tabla de errores) y se rechazará la petición. 3.1.3 Autenticación y Autorización 3.1.3.1 Implementación UsernameToken El objeto UsernameToken contiene las informaciones para autentificar el usuario que llama un servicio de esta interfaz. A continuación se presenta un ejemplo de contenido de un objeto UsernameToken 1. Login: clinica1234 2. Contraseña: _fds545$ Línea Contenido 1 <wsse:usernametoken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:id="id-0001369141253585-0000000060e9540a-1"> 2 <wsse:username>identificador_prestador</wsse:username> 3 <wsse:password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile- 1.0#PasswordText">password123$</wsse:Password> 4 <wsu:created>2017-09-21t13:00:53z</wsu:created> 5 </wsse:usernametoken> 3.1.3.2 Elemento <wsse:usernametoken> El objeto <wsse:usernametoken> contiene las informaciones para la autenticación. Este objeto debe ser contenido en el objeto Security del encabezado SOAP: El atributo xmlns:wsu hace referencia al URI de definición del namespace WSU (WebService Security Utility). El atributo wsu: Id corresponde a una cadena de caracteres específica al token utilizado. Documento de Arquitectura Página 9 de 11
Este atributo es generado automáticamente. 3.1.3.3 Elemento <wsse:username> El objeto <wsse:username> contiene el nombre del usuario. Este objeto es obligatorio y debe ser proporcionado por el usuario. 3.1.3.4 Elemento <wsse:password> El objeto <wsse:password> contiene la contraseña asociada al nombre del usuario. Este atributo es obligatorio y debe ser proporcionado por el usuario. La contraseña debe ser enviado sin protección (se transmite en texto sin cifrar). 3.1.3.5 Elemento <wsse:created > Este elemento debe contener la fecha hora en que se ejecuta la invocación al servicio. 3.1.3.6 Elemento <wsse:signature> Este elemento debe las información de la firma electronica simple, y el elemento que se firma es el Body. Ejemplo: <ds:signature Id="SIG-3AE3A5A98A87B6458E150723666260212" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:signedinfo> <ds:canonicalizationmethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <ds:signaturemethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:reference URI="#id-3AE3A5A98A87B6458E15072365645966"> <ds:transforms> <ds:transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="cuen" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:transform> </ds:transforms> <ds:digestmethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:digestvalue>18dibqz4yiwrn1vg1h9ovhglhbu=</ds:digestvalue> </ds:reference> </ds:signedinfo> <ds:signaturevalue>tnsfpw2wb6pyfwt2hunswl7arriecbq7zdbja8qa12nlg4zh5dgltkgd3/jc6oqbebnqyvm/vfgb B+RyzQhbFvejETD4vjSZKyM/Xnwti66cUePkQn2ANse0m4n+tIneP1G/emFMH+QQ2rFZCE3OEH1K M1vyCBelTuTrXA74upMZ/AvNEZHCc3rJ5YVFdweMMaCSMekc0rIjD6nhcvJM8zeU6vueXxKhRM2r loosirnf46rt0nnuxdrx2qxx8dkt/stekzmq4a14b/eaxgdyhtt2dz45a3r4ikwlc2g7kowd9eyq ZOlNLJZTHDFimmLzVA5b+7PH1q06H7FckKChaA==</ds:SignatureValue> <ds:keyinfo Id="KI-3AE3A5A98A87B6458E150723666260110"> <wsse:securitytokenreference wsu:id="str-3ae3a5a98a87b6458e150723666260111"> <ds:x509data> <ds:x509issuerserial> <ds:x509issuername>cn=pedro Carrasco,OU=Proyecto SIIS,O=Fondo Nacional de Salud,L=Santiago,ST=Chile,C=CL</ds:X509IssuerName> <ds:x509serialnumber>1507234293</ds:x509serialnumber> </ds:x509issuerserial> </ds:x509data> </wsse:securitytokenreference> </ds:keyinfo> </ds:signature> 3.1.4 Protección del Mensaje El servicio debe ser publicado utilizando un canal seguro mediante https, con un certificado autofirmado para el servidor publicador. Documento de Arquitectura Página 10 de 11
De esta manera se asegura que el mensaje solo puede ser leido por el prestador que publica. Tambien se recomienda aplicar un filtrado por IP y habilitar solo IP de para recepcionar la información, autorizando las siguientes IP publicas. IP Públicas Descripción Ambiente Sub Dominio Seguro 186.0.216.153 Plataforma de Interoperabilidad PRODUCCIÓN https://wsca.fonasa.cl 186.0.216.151 Plataforma de Interoperabilidad QA https://wsqa.fonasa.cl 3.1.5 Codigos de Respuesta Se implementarán los siguientes códigos de respuesta que representarán el estado de la comunicación. Los estados de respuesta serán los definidos por la W3C en https://www.w3.org/protocols/rfc2616/rfc2616-sec10.html Codigo Estado Respuesta Glosa Error Descripción 500 Internal Server Error Error generico de procesamiento interno 415 Unsupported Media Type Falla validación de content-type 413 Request Entity Too Large El mensaje es más largo de lo definido 405 Method Not Allowed El metodo no esta permitido, solo acepta POST 403 Forbidden Usuario no logeado 401 Unauthorized Usuario no autorizado para acceder al servicio 200 OK Respuesta exitosa Los codigos de estado semantico del mensaje HL7 es definido dentro de las guías de implementación de la mensajeria. 3.1.6 Insumo a Para asegurar la el consumo del servicio publicado, el Prestador debe enviar un correo indicando la siguiente información. 1. URL del Servicio, indicando claramente el puerto. 2. Credenciales para generar el hash de Basic Authentication. 3. Proyecto de ejemplo con soapui para ser importado. El correo debe estar dirigido a: Carlos Nuñez Contreras carlos.nunez_ext@fonasa.gov.cl Copiando a: Alex Arevalo Vergara afarevalo@fonasa.gov.cl Pedro Carrasco Curin pacarrasco@fonasa.gov.cl en caso que la evaluación el endpoint entregado cumpliando estas caracteristicas se integrará el endpoint a la plataforma de interoperabilidad, en caso contrario se debe iterar una vez más para cumplir con las caracteristicas. Documento de Arquitectura Página 11 de 11