Interoperabilidad de los servicios telemáticos de la
Administración Pública de la CAC Página 1 de 38
Consumo de los servicios de Platino 2.0 en Pre- Explotación
Rev. Fecha Descripción
0 25/01/13 Redacción Inicial
1 25/04/13 Se añaden las librerías de las cabeceras de seguridad de Platino para la versión de CXF 2.4.3
2 10/07/13 Se añade el servicio SVD y se eliminan los servicios SVDI y SVDR 3 11/09/13 Se añade un sección de errores en el consumo de servicios
4 08/10/14 Se añaden y corrigen algunos ejemplos de código para mayor claridad del manual
Documento PLA-DOC-FIN-08-10-14-Consumo de los servicios de Platino 2.0.pdf Ubicación en eCarpeta Oficina Técnica Platino > Seguimiento del proyecto > Actas e informes
Preparado por Revisado por Aprobado por
D. Gral. de Telecomunicaciones y Nuevas Tecnologías
D. Gral. de Telecomunicaciones y Nuevas Tecnologías
Oficina Técnica de Platino Oficina Técnica de Platino DGTNT
Fecha: 08/10/14 Fecha: 08/10/14 Fecha:
ÍNDICE
1 INTRODUCCIÓN...4
2 REQUISITOS...5
3 ACCESO A LOS SERVICIOS...6
3.1 Servicio Base de Datos de Organización...6
3.2 Servicio Base de Datos de Procedimientos...6
3.3 Servicio Envio de mensajes y emails...6
3.4 Servicio Formularios PDF...7
3.5 Servicio Firma y Sellado de Tiempo...7
3.6 Registro Electrónico de Entrada y Salida...7
3.7 Gestión de Repositorio de Documentos Electrónicos...7
3.8 Servicio Portafirmas...8
3.9 Servicio Pasarela de pagos...8
3.10 Servicio Soporte a la tramitación telemática...8
3.11 Servicio Tablón de anuncios...9
3.12 Servicio Verificación de datos...9
3.13 Servicio Base de Datos de Terceros...9
4 CREACIÓN Y/O REGENERACIÓN DE CLIENTES CON JAVA...10
4.1 Prerequisitos...10
4.1.1 Windows...10
4.1.2 Linux/Mac Os X...10
4.1.3 Configuración Adicional...11
4.1.4 Funcionamiento Básico de Maven...11
4.2 Generar el cliente usando Maven y Apache CXF...11
4.2.1 Ejemplo de proyecto para el consumo de Platino con Maven...13
4.3 Consumir el web service generado...14
4.4 Seguridad en PLATINO...14
4.5 Formato de los parámetros adicionales de la cabecera...15
4.6 Ejemplo de petición sin cabeceras...15
4.7 Ejemplo de petición con cabeceras de seguridad habilitadas:...16
4.8 Añadiendo cabeceras de seguridad a las peticiones...17
4.8.1 Uso de la librería...18
4.8.2 Fichero client_sign.properties...19
4.8.3 Secuencia de pasos...20
5 CONSUMO DE PLATINO CON SOAPUI...22
5.1 Configuración de SoapUI...22
5.2 Creación del proyecto...23
5.3 Creación de las interfaces...26
5.4 Configuración del proyecto...28
5.5 Configuración de la interfaz...35
5.6 Configuración de soapUI...36
6 ERRORES EN EL CONSUMO DE LOS SERVICIOS DEPLATINO 2.0...37
6.1 UnmarshalException...37
7 ANEXOS...38
7.1 Consulta del alias del certificado almacenado en un PFX...38
1 INTRODUCCIÓN
El presente documento pretende exponer todos aquellos elementos técnicos necesarios para acceder a los servicios migrados en el nuevo entorno de pre-explotación.
El documento se estructura de la siguiente forma:
•
• Inicialmente se definen los requisitos técnicos necesarios para consumir dichos servicios.
•• En el siguiente punto se detallan los conectores WSDLWSDL para acceder a dichos servicios en el entorno específico.
•
• Posteriormente se detalla, con un ejemplo concreto, el consumo de dichos servicios a través de Java.
•• En el siguiente punto se explica los cambios necesarios para consumir los servicios de la nueva plataforma a través de SOAUI.
•
• En el último apartado se recogen los anexos, los cuales son procedimientos de ayudas para realizar operaciones concretas. Actualmente sólo contiene la forma de consultar el alias del certificado que se usa para el consumo de la plataforma.
2 REQUISITOS
Para poder utilizar el entorno de pre-explotación es necesario contar con acceso a los servidores de Platino, ya sea directamente a través de la red corporativa del Gobierno de Canarias, o mediante una conexión VPN con los permisos adecuados.
En la siguiente página web se detalla el proceso para solicitar acceso a la plataforma:
•
• http://www.gobiernodecanarias.org/platino/acceso.html1
Se recuerda que para solicitar un acceso por VPN se deberá dirigir la petición a [email protected]2 indicando que se solicita Acceso a Platino PRE.
El consumidor de Platino también debe poseer un certificado electrónico emitido por Cibercentro que permita el acceso seguro a la plataforma Platino. Este certificado será proporcionado por la Oficina Técnica de Platino (OTP) como parte del procedimiento de integración con Platino.
1 http://www.gobiernodecanarias.org/platino/acceso.html 2 mailto:[email protected]
3 ACCESO A LOS SERVICIOS
A continuación se detallan los datos técnicos para cada uno de los servicios. En cada apartado se recoge la URL de consumo del servicio y los cambios que se producen en la interfaz.
3.1 Servicio Base de Datos de Organización
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/dborganizacion?wsdl3 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.2 Servicio Base de Datos de Procedimientos
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/dbprocedimientos?wsdl4 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
•
• El service name en la plataforma actual es DBProcedimientosServiceDBProcedimientosService, en la nueva plataforma este service name ha cambiado a DBProcedimientosServiceBeanServiceDBProcedimientosServiceBeanService.
•• El port name en la plataforma actual es DBProcedimientosServiceDBProcedimientosService, en la nueva plataforma este port name ha cambiado a DBProcedimientosServiceBeanPortDBProcedimientosServiceBeanPort
3.3 Servicio Envio de mensajes y emails
Las URL de consumo son las siguientes:
•
• http://buger.gobiernodecanarias.net:8077/edmyce/areas?wsdl5,
•• http://buger.gobiernodecanarias.net:8077/edmyce/listaDistribucion?wsdl6,
•
• http://buger.gobiernodecanarias.net:8077/edmyce/mensaje?wsdl7
3 http://buger.gobiernodecanarias.net:8077/dborganizacion?wsdl 4 http://buger.gobiernodecanarias.net:8077/dbprocedimientos?wsdl 5 http://buger.gobiernodecanarias.net:8077/edmyce/areas?wsdl 6 http://buger.gobiernodecanarias.net:8077/edmyce/listaDistribucion?wsdl 7 http://buger.gobiernodecanarias.net:8077/edmyce/mensaje?wsdl
Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.4 Servicio Formularios PDF
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/forpdf?wsdl8 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.5 Servicio Firma y Sellado de Tiempo
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/firma?wsdl9 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.6 Registro Electrónico de Entrada y Salida
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8076/registro/?wsdl10 Adaptación al cambio:
•
• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
•• Se han añadido las siguientes excepciones
3.7 Gestión de Repositorio de Documentos Electrónicos
La URL de consumo es la siguiente:
8 http://buger.gobiernodecanarias.net:8077/forpdf?wsdl 9 http://buger.gobiernodecanarias.net:8077/firma?wsdl 10 http://buger.gobiernodecanarias.net:8076/registro/?wsdl
•
• http://buger.gobiernodecanarias.net:8076/sgrde?wsdl11 apartado12 correspondiente.
Adaptación al cambio:
•
• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.8 Servicio Portafirmas
Las URLs de consumo son las siguientes:
•• http://buger.gobiernodecanarias.net:8077/portafirmas/solicitudfirma/?wsdl13
•
• http://buger.gobiernodecanarias.net:8077/portafirmas/administracion/?wsdl14 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.9 Servicio Pasarela de pagos
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/pasarelaPagos/?wsdl15 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.10 Servicio Soporte a la tramitación telemática
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/tramitacion/?wsdl16 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
11 http://buger.gobiernodecanarias.net:8076/sgrde?wsdl
12 http://lapa.gobiernodecanarias.net/trac/platino#CreaciónyoregeneracióndeclientesconJAVA 13 http://buger.gobiernodecanarias.net:8077/portafirmas/solicitudfirma/?wsdl
14 http://buger.gobiernodecanarias.net:8077/portafirmas/administracion/?wsdl 15 http://buger.gobiernodecanarias.net:8077/pasarelaPagos/?wsdl
16 http://buger.gobiernodecanarias.net:8077/tramitacion/?wsdl
3.11 Servicio Tablón de anuncios.
Las URLs de consumo son las siguientes:
•
• http://buger.gobiernodecanarias.net:8077/tablonanuncios/administracion?wsdl17
•
• http://buger.gobiernodecanarias.net:8077/tablonanuncios/suscripcion?wsdl18
•• http://buger.gobiernodecanarias.net:8077/tablonanuncios/gestion?wsdl19 Adaptación al cambio:
•
• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
3.12 Servicio Verificación de datos
La URL de consumo es la siguiente:
•• http://buger.gobiernodecanarias.net:8077/svd/?wsdl20
3.13 Servicio Base de Datos de Terceros
La URL de consumo es la siguiente:
•
• http://buger.gobiernodecanarias.net:8077/terceros?wsdl21 Adaptación al cambio:
•• No se requiere ningún cambio adicional, a excepción de la regeneración del cliente.
Consultar el apartado 4 del presente documento.
17 http://buger.gobiernodecanarias.net:8077/tablonanuncios/administracion?wsdl 18 http://buger.gobiernodecanarias.net:8077/tablonanuncios/suscripcion?wsdl 19 http://buger.gobiernodecanarias.net:8077/tablonanuncios/gestion?wsdl 20 http://buger.gobiernodecanarias.net:8077/svd/?wsdl
21 http://buger.gobiernodecanarias.net:8077/terceros?wsdl
4 CREACIÓN Y/O REGENERACIÓN DE CLIENTES CON JAVA
Para la creación de los clientes que consuman los servicios web de PLATINO, utilizaremos una herramienta que es capaz de generar automáticamente las clases Java necesarias para invocar estos servicios.
Una herramienta recomendada es Maven apoyada en CXF, ya que la generación de clientes es simple y declarativa.
4.1 Prerequisitos
Debemos ir al sitio web de Maven22 y descargar los binarios para su instalación. Se recomienda la instalación de la versión 3.X.
IMP: Antes de realizar los siguientes pasos de la instalación, asumimos que ya de antemano existe la variable JAVA_HOME apuntando a la ruta donde tenemos instalado nuestra versión de Java y que a su vez los binarios de Java ya han sido añadidos al PATH del sistema.
4.1.1 Windows
Una vez descargado el software, descomprimirlo en la carpeta de deseemos, por ejemplo para usuarios windows podria ser la ruta C:\Archivos de programa\apache-maven.
Creamos las variables de entorno en panel de control->Sistema->Opciones avanzadas-
>variables de entorno. Alli crearemos 2 nuevas variables del sistema. La primera será M2_HOME su valor será la ruta (path) donde hallamos instalado maven p.e. C:\Archivos de programa\apache-maven\apache-maven-3.0.4. La segunda variable será M2 y su valor será %M2_HOME%\bin.Editamos la variable del sistema PATH, y agregamos al final del contenido del valor de la variable PATH, el valor de la variable M2, de la siguiente manera:valor_variable_path;%M2%.Probamos que los pasos anteriores se han efectuado correctamente. En linea de comandos (inicio->ejecutar: cmd.exe) tecleamos mvn -version y deberá aparecer la información de maven, junto con la versión java, la ruta de instalación, etc.
4.1.2 Linux/Mac Os X
Una vez descargado maven, lo extraemos en el lugar que deseemos, pero podriamos utilizar la ruta /usr/local/apache-maven.En el terminal por linea de comando, exportamos la variable M2_HOME con el valor de la ruta donde hemos instalado maven por ejemplo, export M2_HOME = /usr/local/apache-maven/apache-maven-3.0.4. De igual manera hacemos con la variable M2, de la siguiente manera, export M2=$M2_HOME/bin.Agregamos al PATH la variable M2, de la siguiente manera, export
22 http://maven.apache.org/download.cgi
PATH=$M2:$PATH.Probamos que los pasos anteriores se han efectuado correctamente tecleando en un terminal el comando mvn -version y deberá aparecer la información de maven, información de java, la ruta de instalación, etc.
4.1.3 Configuración Adicional
Si entramos en la ruta donde hemos instalado maven encontraremos el fichero settings.xml dentro de la carpeta conf. Este fichero nos permite configurar aspectos adicionales, como pueden ser modificar la ruta por defecto donde se aloja nuestro repositorio local o indicar una conexón proxy, entre otras cosas.
<localRepository>C:\RutadeNuestroRepositorioLocal</localRepository>
4.1.4 Funcionamiento Básico de Maven
Maven funciona en fases, y una fase no es más que un paso dentro del ciclo de vida de construcción de un proyecto. Es importante tener en cuenta que para llegar a una fase es necesario haber pasado previamente por las fases que le preceden. Las fases por defecto más comunes de un proyecto son las siguientes:
•• validate: Valida que el proyecto esta correcto y dispone de la información necesaria.
•
• compile: Compila el código fuente del proyecto.
•
• test: Prueba el código fuente compilado haciendo uso de frameworks para pruebas unitarias (JUnit).
•
• package: Empaqueta el código fuente compilado (por ejemplo creando un jar o war).
•
• integration-test: Procesa y despliega el paquete dentro de un entorno de test de integración.
•• verify: Ejecuta los controles necesarios para verificar si el paquete es válido y cumple con los criterios de calidad.
•
• install: Instala el paquete dentro del repositorio local, para poder usarlo como dependencia en otro proyecto.
•
• deploy: Copia el paquete final al repositorio remoto para compartir con otros desarrolladores y proyectos.
4.2 Generar el cliente usando Maven y Apache CXF
Vamos a crear un proyecto sencillo para la generación de un cliente de PLATINO utilizando maven y CXF, generando las clases java necesarias para consumir un web service.
Los pasos serán los siguientes:
1.1. Crear un proyecto maven a través de un IDE (Eclipse, ...) o con la siguiente sentencia:
mvn archetype:create -DgroupId=es.gobcan.servicios.clientes -DartifactId=platino-servicios-clientes-X
Esto nos creará un directorio platino-servicios-clientes-X y dentro de él la estructura de directorios y ficheros de nuestro proyecto java/maven.
2.2. Editando el fichero pom.xml obtendremos un resultado similar al siguiente:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven- 4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>es.gobcan.platino.servicios.clientes</groupId>
<artifactId>platino-servicios-clientes-X</artifactId>
<version>1.0</version>
<packaging>bundle</packaging>
<name>Cliente de Servicio de X de Platino</name>
3.3. Ahora modificaremos el pom.xml para poner las dependencias y la llamada al plugin wsdl2java de cxf que será el encargado de generar las clases java. En el pom.xml tenemos que poner algo como esto:
<properties>
<wsdl>http://buger.gobiernodecanarias.net:8077/firma?wsdl</wsdl>
<maven-bundle-plugin>2.3.7</maven-bundle-plugin>
<cxf.codegen>2.4.3-fuse-01-02</cxf.codegen>
<cxf.bundle>2.4.3-fuse-03-02</cxf.bundle>
<java.version>1.6</java.version>
</properties>
<build>
<defaultGoal>clean install</defaultGoal>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<versionRange>[0.0.0,)</versionRange>
<goals>
<goal>wsdl2java</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.codegen}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>$
{basedir}/src/main/java</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${wsdl}</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${maven-bundle-plugin}</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle- SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Require-Bundle>org.apache.cxf.bundle</Require-Bundle>
<Export-Package>
es.gobcan.platino.servicios.X
</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cfx-bundle</artifactId>
<version>${cxf.bundle}</version>
</dependency>
</dependencies>
4.2.1 Ejemplo de proyecto para el consumo de Platino con Maven
Existe un proyecto maven que genera de forma automática los clientes de los servicios de
Platino.Descarga23
4.3 Consumir el web service generado
Una vez tengamos las clases generadas, podremos consumir el servicio de Platino. En las clases generadas, habrá una que coincida con el service name del WSDL que hemos usado. Esta clase extiende la clase Service.
Accediendo a la ruta del wdsl podremos visualizar algo similar a esto:
<wsdl:portType name="PlatinoSignatureServerBean"></wsdl:portType>
<wsdl:binding name="firmaServiceSoapBinding" type="tns:PlatinoSignatureServerBean">
</wsdl:binding>
<wsdl:service name="firmaService">
<wsdl:port binding="tns:firmaServiceSoapBinding" name="firmaService">
<soap:address location="http://buger.gobiernodecanarias.net:8077/firma"/>
</wsdl:port>
</wsdl:service>
Podremos instanciar esta clase y de ella obtener el Port que nos permita invocar los métodos del servicio web:
4.4 Seguridad en PLATINO
La seguridad en Platino se basa en la especificación de Web Service Security (WSS), que propone un conjunto estándar de extensiones que pueden ser usadas para construir Web Services Seguros y para garantizar la integridad del contenido del mensaje.Platino requiere que la cabecera WSS del mensaje SOAP utilizado para la invocación de cualquier servicio, contenga la siguiente información:
•• El actor que debe aparecer en la cabecera de seguridad es:
http://www.gobiernodecanarias.org/Platino/Authentication/1.024
•
• La cabecera WSS debe contener el elemento wsse:UsernameToken, cuyo hijo wsse:Username dependerá del origen de la petición a PLATINO:
•• Si la petición a PLATINO se está realizando en nombre de un tercero que se ha autenticado previamente en el backoffice, deberá pasarse la URI del tercero obtenida del servicio de terceros de PLATINO
•• Si la petición a PLATINO se está realizando en nombre de un empleado público que se ha autenticado previamente en el backoffice, debería pasarse la URI del empleado público obtenida del servicio de BD de Organización.
23 http://www.gobiernodecanarias.net/platino/docs/clientes-servicios-platino.zip 24 http://www.gobiernodecanarias.org/Platino/Authentication/1.0
•
• Si la petición a PLATINO se está realizando en nombre del propio backoffice, deberá pasarse la URI que ha sido asignada a ese backoffice en la generación del certificado correspondiente.
•
• En el campo wsse:Password del elemento wsse:UsernameToken debe indicarse PLATINO.
IMP.- Este campo cambia respecto a la versión anterior ya que se ha actualizado la librería WSS4J a la versión 1.6 y corrige un bug detectado en la versión anterior.
•
• El elemento wsse:UsernameToken también debe incluir el campo wsse:Nonce
•• La cabecera WSS debe contener el elemento wsse:BinarySecurityToken que contenga la parte pública del certificado con el que se realiza la firma de la petición.
•
• La cabecera debe contener un elemento que agrupe ciertos parámetros adicionales, que se utilizarán en el ámbito de la autorización de determinadas operaciones sobre ciertos servicios. La definición de este elemento se comenta en el siguiente apartado.
•• La cabecera WSS debe contener el elemento wsse:Signature donde se refleje que, con el certificado del punto anterior, se ha realizado la firma XML Signature de los elementos wsse:UsernameToken,soap:Body y platino:platinoHeaders.
4.5 Formato de los parámetros adicionales de la cabecera
En ciertas ocasiones, es posible que PLATINO requiera que se le proporcionen ciertos parámetros adicionales para poder llevar a cabo la autorización. Estos parámetros se enviarán en la cabecera siguiente la siguiente estructura:
<platino:platinoHeaders xmlns:platino="http://platino.gobcan.es">
<platino:parameter name=”nombre1”>valor1</platino:parameter>
<platino:parameter name=”nombre2”>valor2</platino:parameter>
…
<platino:parameter name=”nombreN”>valorN</platino:parameter>
</platino:platinoHeaders>
A continuación se mostrarán diferentes peticiones a PLATINO.
4.6 Ejemplo de petición sin cabeceras
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:sfst="http://platino.gobcan.es/servicios/sfst/">
<soapenv:Header/>
<soapenv:Body>
<sfst:getVersion/>
</soapenv:Body>
</soapenv:Envelope>
4.7 Ejemplo de petición con cabeceras de seguridad habilitadas:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext- 1.0.xsd"
soap:actor="http://www.gobiernodecanarias.org/Platino/Authentication/1.0" soap:mustUnderstand="1">
<wsse:BinarySecurityToken
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- utility-1.0.xsd"
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message- security- 1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token- profile-1.0#X509v3"
wsu:Id="CertId-22603721"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">
MIIEOTCCA+OgAwIBAgIKPcglswACAAAPTjANBgkqhkiG9w0BAQUFADCBlzExMC8GCSqGSIb3DQEJARYiY2l
iZXJjZW50cm9AZ29iaWVybm9kZWNhbmFyaWFzLm9yZzELMAkGA1UEBhMCRVMxETAPBgNVBAgTCENhbmFyaWFzMR0wGwYDVQ QKExRHb2JpZXJubyBkZSBDYW5hcmlhczENMAsGA1UECxMEREdUSTEUMBIGA1UEAxMLY2liZXJjZW50cm8wHhcNMDgwNzE0M Dg1NjM4WhcNMDkwNzE0MDkwNjM4WjCBjTEnMCUGCSqGSIb3DQEJARYYanBhZHJvbkBvcGVuY2FuYXJpYXMuY29tMQswCQYD VQQGEwJFUzERMA8GA1UECBMIQ2FuYXJpYXMxHTAbBgNVBAoTFEdvYmllcm5vIGRlIENhbmFyaWFzMQ0wCwYDVQQLEwRER1R JMRQwEgYDVQQDEwtleHQtanBhZGxvcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAs7JV6F4GzdLXjZWcYyYSHSltco VVLm1dkYm7cv8QAXtRZh/Bi1MTmCioI8hrIvAqvdlFD+YT7pqb47EiW7s3KNcBM31BB29q+wL5hcZz6KhGbGD/QIkT5Q5EU YAA060mMztMZyEERP/rs3snn71Uv4Mx5DR3isHlML7rIv3afZ0CAwEAAaOCAdMwggHPMA4GA1UdDwEB/wQEAwIE8DATBgNV HSUEDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUOrYuuCWlHMs0UMlg+
+wzEhXatfowgdMGA1UdIwSByzCByIAUcO0krLNbKRzd4aIbEFxWoIX1nxKhgZ2kgZowgZcxMTAvBgkqhkiG9w0BCQEWImNp YmVyY2VudHJvQGdvYmllcm5vZGVjYW5hcmlhcy5vcmcxCzAJBgNVBAYTAkVTMREwDwYDVQQIEwhDYW5hcmlhczEdMBsGA1U EChMUR29iaWVybm8gZGUgQ2FuYXJpYXMxDTALBgNVBAsTBERHVEkxFDASBgNVBAMTC2NpYmVyY2VudHJvghAZZsd2bMJlrk CEiAcS60oDMFMGA1UdHwRMMEowSKBGoESGQmh0dHA6Ly9jb2dzd29ydGguZ29iaWVybm9kZWNhbmFyaWFzLm9yZy9jZXJ0Z W5yb2xsL2NpYmVyY2VudHJvLmNybDBeBggrBgEFBQcBAQRSMFAwTgYIKwYBBQUHMAKGQmh0dHA6Ly9jb2dzd29ydGguZ29i aWVybm9kZWNhbmFyaWFzLm9yZy9jZXJ0ZW5yb2xsL2NpYmVyY2VudHJvLmNydDANBgkqhkiG9w0BAQUFAANBAJL8dK7f0oI c6aEQBdfeJYux2xMhL2rVE73rdXft+jobJ4BQ2MnerrHwU3ec75A/wud5BRkH+YPZRlEe+72Dk3M=
</wsse:BinarySecurityToken>
<ds:Signaturexmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-39600">
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:Reference URI="#UsernameToken-27772036" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
4VWfEIjnBSCdrbmrGnorh4J5DmM=
</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#id-8694274" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> tALpI3yyj/TsfnCeVwEWIb1UsfI=
</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#id-28681226" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
<ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> oZHM1Zd5zkviVBwJ782nQm8i+ao=
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
QzbMKnhAD2sRe5eannzrtK8dSZzs/tbA18/9irOnrhp6f+U0Dru6Ulsbp94q+J4VcRV2FLmETIIK
16UIJv/98r046r5Y4fXrnGSXNawqFDKfbeftBaXfxN/PwscRIT4JOIjM10Kvc4KMLbhKPybECpQa ovBKfo5FxY+RjQIK/ZE=
</ds:SignatureValue>
<ds:KeyInfo Id="KeyId-2884607" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-utility-1.0.xsd"
wsu:Id="STRId-33517025"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-secext-1.0.xsd">
<wsse:Reference URI="#CertId-22603721"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509- token-profile-1.0#X509v3"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-secext-1.0.xsd" />
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsse:UsernameToken
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- utility-1.0.xsd"
wsu:Id="UsernameToken-27772036"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">
<wsse:Username
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">
platino://gobcan.es/servicios/terceros/tercero/4525e5da-526f-42d4-bf9b- 64bb02b98399
</wsse:Username>
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token- profile-1.0#PasswordText"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">
</wsse:Password>
<wsse:Nonce
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">
Ip81f+qT96Uan0rISx/GKw==
</wsse:Nonce>
</wsse:UsernameToken>
</wsse:Security>
<platino:platinoHeaders xmlns:platino="http://platino.gobcan.es" xmlns:wsu="http://docs.oasis- open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd" wsu:Id="id-28681226" />
</soap:Header>
<soap:Body
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd"
wsu:Id="id-8694274">
<ns2:getVersion xmlns:ns2="http://platino.gobcan.es/servicios/sfst/" />
</soap:Body>
</soap:Envelope>
4.8 Añadiendo cabeceras de seguridad a las peticiones
Para añadir las cabeceras de seguridad necesarias para Platino, se ha desarrollado una librería que facilita mucho esta tarea si se ha utilizado CXF como generador de clientes.Esta librería podrá descargarse desde la sección "Formación" en el portal WEB dePlatino (http://www.gobiernodecanarias.org/platino25)
Requisitos de la seguridad
•• Debemos incorporar al classpath de nuestra aplicación (consumidora de servicios de Platino) la librería de cabeceras de Platino.
25 http://www.gobiernodecanarias.org/platino
Versión de CXF Librerias de cabecera de Platino
cxf < 2.3 platinoWSSInterceptor-2.0.jar
cxf 2.4.3 platino-security-header-1.201302.0.jar
•• Es necesario estar en posesión del certificado emitido por Cibercentro para el acceso a Platino. Este certificado debe contener la clave privada para poder realizar la firma.
•• En el raíz del classpath del cliente debe existir un fichero denominado client_sign.properties que será utilizado para definir las propiedades de acceso al contenedor del certificado con el que realizar la firma de los mensajes.
4.8.1 Uso de la librería
El método que permite añadir las cabeceras tiene la siguiente interfaz:
1.
1. addSoapWSSHeader.- Añade la cabecera Web Service Security. Los parámetros son los siguientes:
1.1. service(Object).- PortType al que se le va a añadir la cabecera de seguridad.
2.
2. soapVersion(String).- Indica la versión soap del endpoint al que vamos a conectarnos. Por defecto, todos los servicios de Platino utilizan la versión Soap 1.1. Los posibles valores para este parámetro son:
1.
1. PlatinoCXFSecurityHeaders.SOAP_11
2.2. PlatinoCXFSecurityHeaders.SOAP_12
2.2. username(String).- Valor que se asignará al elemento UsernameToken de la cabecera WSS.Hay tres posibles situaciones:
1.1. Cuando el backoffice esté realizando una petición a Platino en nombre de un tercero, este parámetro contendrá la URI del tercero en Platino, obtenida a través del servicio de base de datos de terceros.
2.
2. Cuando el backoffice esté realizando una petición a Platino en nombre de un empleado público, este parámetro contendrá la URI del empleado público en Platino, extraída a través del servicio de base de datos de organización.
3.
3. Cuando el backoffice esté realizando una petición a Platino en su propio nombre, este parámetro contendrá la URI del backoffice asignada mediante el proceso de integración con Platino.
3.
3. alias(String).- Alias del certificado con el que recuperaremos del almacén de
certificados el que se utilizará para realizar la firma del mensaje SOAP.
4.
4. keystoreCallbackHandler(String).- Nombre de la clase que implementa el CallbackHandler que proporcionará el password del almacén de certificados.
ej. Para una clase llamada KeyStoreCallbackHandler que implemente la interfaz CallbackHandler, la forma de obtener el valor para este parámetro será:
KeyStoreCallbackHandler.class.getName()
Un ejemplo de una clase mínima que implemente esta interfaz sería:
public class KeyStoreCallbackHandler implements CallbackHandler { @Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword(ResourceBundle.getBundle("client_sign").getString("org.apache.ws.security.crypto.merlin.ke ystore.password"));
} }
5.
5. headers(Map<String, String>).- Mapa que almacena las cabeceras adicionales que serán añadidas al mensaje SOAP.
A continuación se muestra un ejemplo de invocación a un servicio de Platino, donde se añaden las cabeceras de seguridad:
FirmaService firmaService = new FirmaService();
PlatinoSignatureServerBean service = firmaService.getFirmaService();
PlatinoCXFSecurityHeaders.addSoapWSSHeader(service,
PlatinoCXFSecurityHeaders.SOAP_11, "platino://gobcan.es/servicios/terceros/t ercero/4525e5da-526f-42d4-bf9b-64bb02b98399",
"cert-alias", KeyStoreCallbackHandler.class.getName(), null);
String version = service.getVersion();
Si además fuese necesario inyectar algún parámetro adicional en la cabecera del mensaje, debemos hacer algo equivalente al siguiente ejemplo de código:
FirmaService firmaService = new FirmaService();
PlatinoSignatureServerBean service = firmaService.getFirmaService(); Map<String,String> headers = new HashMap<String,String>(); headers.put("cabecera1", "valor1");
headers.put("cabecera2", "valor2"); PlatinoCXFSecurityHeaders.addSoapWSSHeader(
service, PlatinoCXFSecurityHeaders.SOAP_11, "platino://gobcan.es/servicios/terceros/t ercero/4525e5da-526f-42d4-bf9b-64bb02b98399",
"cert-alias", KeyStoreCallbackHandler.class.getName(), headers);
String version = service.getVersion();
4.8.2 Fichero client_sign.properties El fichero contiene las siguientes propiedades:
•• org.apache.ws.security.crypto.provider.- Proveedor criptográfico
•
• org.apache.ws.security.crypto.merlin.keystore.type.- Formato del almacén de certificados
•• org.apache.ws.security.crypto.merlin.keystore.password.- Password del almacén de
certificados
•• org.apache.ws.security.crypto.merlin.file.- Ubicación del almacén de certificados Un ejemplo de la implementación de este fichero es la siguiente:
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.cry pto.Merlin org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=password org.apache.ws.security.crypto.merlin.file=keystore.jks
4.8.3 Secuencia de pasos
La secuencia de pasos que sigue una petición con esta nueva filosofía es la siguiente:
1.1. Se obtiene el objeto de servicio del cliente CXF:
FirmaService firmaService = new FirmaService();
PlatinoSignatureServerBean service = firmaService.getFirmaSecService();
2.
2. Se solicita la adición de las cabeceras de seguridad de Platino:
PlatinoCXFSecurityHeaders.addSoapWSSHeader( service,
PlatinoCXFSecurityHeaders.SOAP_11,"platino://gobcan.es/servicios/terceros/tercer o/4525e5da-526f-42d4- bf9b-64bb02b98399",
"cert-alias", ClientPasswordHandler.class.getName(), null);
3.
3. Se realiza la invocación:
String version = service.getVersion();
4.
4. Automáticamente se ejecutan los Interceptors que añaden las cabeceras de seguridad:
1.1. Se crea el elemento wsse:UsernameToken
2.
2. Se accede al certificado y se genera el wsse:BinarySecurityToken
3.3. Se crea el elemento platino:platinoHeaders con las cabeceras proporcionadas.
4.
4. Se firma el elemento wsse:UsernameToken, platino:platinoHeaders y soap:Body
5.
5. La petición llega a Platino
6.6. Proceso de autenticación y autorización:
1.
1. Se comprueba la validez de la firma
2.
2. Se comprueba que el certificado con el que se ha firmado pertenece a un consumidor registrado de PLATINO
3.3. La petición está autenticada
4.
4. Se ejecutan las reglas de autorización para comprobar que tiene permisos para realizar la petición
5.5. La petición está autorizada
Si el proceso fallase en el punto 6.1, 6.2 o 6.4, el proceso de autorización devolverá un error indicando que la petición ha sido rechazada.
5 CONSUMO DE PLATINO CON SOAPUI
Antes de empezar a configurar la herramienta soapUI debemos disponer de los siguientes elementos:
•• Aplicación SoapUI: Para el presente documento hemos utilizado la versión 4.X o superior.
•
• Esta aplicación se puede obtener de forma gratuita en www.soapui.org.
•• Cumplir las indicaciones que se especifican en el punto Requisitos.
5.1 Configuración de SoapUI
Para configurar correctamente la aplicación soapUI debemos realizar los siguientes pasos:
•
• Creación del proyecto: Permite definir un proyecto junto a las interfaces de los servicios de Platino. que contendrá las interfaces de los diferentes web services de Platino y sobre el que se aplica la configuración de seguridad
•
• Configuración del proyecto: Permite establecer la configuración para las cabeceras de seguridad que se incluyen en las peticiones a Platino
•• Configuración de la interfaz: Indica como aplicar la configuración de seguridad a la interfaz de cada servicio
•
• Configuración de soapUI: Datos de configuración de la herramienta
•• Prueba de funcionamiento: Realización de una prueba para comprobar el correcto funcionamiento de la configuración utilizada.
5.2 Creación del proyecto
El primer paso consiste en la creación de un proyecto que contendrá todas las interfaces (wsdl) correspondientes a los servicios de Platino que deseemos consumir. Para ello realizamos los siguientes pasos:
1.
1. Pulsar botón derecho del ratón sobre Projects y seleccionar New soapUI Project / Ctrl-N:
1.
1. Se muestra una ventana en la se debe introducir un nombre para el proyecto. En este caso le daremos el nombre PLATINO – PRE:
Se puede incluir el wsdl de alguno de los servicios. Como en este caso Platino dispone de varios wsdl, se muestra a continuación como incluirlos.
5.3 Creación de las interfaces
Para añadir el wsdl de cada servicio de Platino debemos seguir los siguientes pasos:
1.
1. Pulsar botón derecho del ratón sobre el proyecto y seleccionar Add WSDL / Ctrl-U.
1.1. En la ventana que se muestra a continuación se debe introducir la localización del wsdl del servicio a incluir, que puede estar en un archivo o mediante url:
En este ejemplo introducimos la url del wsdl del Servicio de Firma y Sellado de Tiempo:
http://buger.gobiernodecanarias.net:8077/firma?wsdl26. El resultado se muestra en la ventana del proyecto mostrando todos los métodos disponibles en la interfaz:
26 http://buger.gobiernodecanarias.net:8077/firma?wsdl
Para poder realizar esta operación es necesario establecer una conexión a la red de Gobierno mediante la vpn.
En el documento Acceso a los servicios en Pre-explotación, disponible en la web de Platino ( http://www.gobiernodecanarias.org/platino/formacion.html27) se describen los wsdl de todos los servicios que ofrece Platino. Se podrán incluir los wsdl de todos los servicios repitiendo este proceso para cada uno de ellos.
Nota.-: En caso de obtener las url de dicho documento, mediante la técnica de copiar- pegar, es conveniente revisar que no se introduzcan espacios en blanco al pegar el texto.
5.4 Configuración del proyecto
1.1. Acceder a los certificados del proyecto: Para ello hacemos doble Click en el
nombre del proyecto (PLATINO-PRE) y seleccionamos la pestaña Security Configurations y a continuación keystores.
27 http://www.gobiernodecanarias.org/platino/formacion.html
1.1. Añadir el certificado: Al pulsar [+] se abre una ventana de diálogo que permite seleccionar el certificado de acceso a Platino. Una vez seleccionado pedirá la clave para poder acceder al mismo. El resultado se muestra de la siguiente
manera:
1.
1. Añadir configuración: La pestaña Outgoing WS-Security Configurations
permite establecer la configuración para los mensajes enviados al invocar unservicio.
Para ello definimos una nueva configuración pulsando el botón [+] .Se le asigna un nombre a la configuración y se cumplimentan los campos de lasiguiente manera:
•
• Name.- Nombre asignado al crearlo. En este ejemplo miConexion.
•
• Default Username/Alias* .- Alias del certificado (ej: pre_platino) – Esta información
se obtiene del certificado.
•• Actor.- http://www.gobiernodecanarias.org/Platino/Authentication/1.028
•
• Must Understand.- VERDADERO.
›
› *Si no se conoce el alias del certificado, el apartado ANEXOS.
•• El resultado se muestra de la siguiente manera:
••
•
•
1.1. Añadir cabeceras: Seleccionamos la nueva configuración y en la parte inferior
de la pantalla añadimos nuevas WSS Entry mediante el botón [+]. En este casovamos a añadir una entrada Username y otra Signature.
IMPORTANTE: Platino es sensible al orden en el que se colocan las cabeceras. Por tanto, esta configuración se debe realizar en el orden correcto, es decir, primero se añade la cabecera Username y a continuación la cabecera Signature. Si se altera el orden no funcionarán las peticiones.
1.1. Configuración de Username: Permite identificar al responsable de la petición.
2.
2.
28 http://www.gobiernodecanarias.org/Platino/Authentication/1.0
A continuación se muestran los valores de los campos:
1.1. Username.- Identifica al peticionario. Los valores deben ser:
›› El tercero que utiliza el BackOffice
›
› La URI del servicio (para las consultas entre servicios)
›
› La URI del BackOffice
2.
2. Password.- Este valor es importante y cambia respecto a la versión anterior, se debe de indicar PLATINO.
3.3. Add Nonce.- Verdadero.
4.4. Add Created.- Verdadero.
5.
5. Password Type.- PasswordText.
El resultado se muestra de la siguiente manera:
1.
1. Signature: Permite la firma de la petición soap.
A continuación se muestran los valores de los campos:
•
• Keystore.- Menú de selección con el nombre del certificado configurado anteriormente.
•• Alias.- Menú de selección con el alias del certificado
•
• Password.- Se debe introducir el password del certificado
•
• Key Identifier Type.- Binary Security Token
•• Signature Algorithm.- http://www.w3.org/2000/09/xmldsig#rsa-sha129
•
• Signature Canonicalization.- DEfault
•
• Digest Algorithm.- http://www.w3.org/2000/09/xmldsig#sha130
•• Use single certificate.- VERDADERO El resultado se muestra de la siguiente manera:
29 http://www.w3.org/2000/09/xmldsig#rsa-sha1 30 http://www.w3.org/2000/09/xmldsig#sha1
5.5 Configuración de la interfaz
Una vez establecida la configuración de seguridad para el proyecto, se debe aplicar a las diferentes interfaces. Para ello se deben realizar los siguientes pasos:
1.
1. Hacemos doble Click en el nombre de la interfaz (Ej: FirmaServiceSoapBinding) y seleccionamos la pestaña Service Endpoints.
2.2. En la columna Outgoing WSS seleccionamos la configuración establecida en el paso anterior (Ej: miConexion)
Aunque con esta configuración es suficiente, es conveniente asegurarse que la nueva configuración se aplica a las peticiones realizadas al servicio. Para ello se selecciona el Endpoint y tras pulsar el botón [Assign] se muestra una ventana donde se debe seleccionar - All Request - .
Tras aceptar, se aplicará la nueva configuración a todas las llamadas al servicio.
5.6 Configuración de soapUI
Dentro de las opciones de configuración de soapUI (Ctrl-Alt-P) se deben comprobarlos siguientes valores:
1.
1. Http Version:
2.2.
6 ERRORES EN EL CONSUMO DE LOS SERVICIOS DEPLATINO 2.0
6.1 UnmarshalException
La adición de un atributo en el servidor provoca un UnmarshalException en el cliente, tal y como se describe en el siguiente enlace CXF-2455. Este problema se resuelve
añadiendo el siguiente código cuando generamos nuestro cliente:
Client client = ClientProxy.getClient(service);
client.getEndpoint().getEndpointInfo().setProperty("set-jaxb-validation-event-handler", false);
7 ANEXOS
7.1 Consulta del alias del certificado almacenado en un PFX
Java proporciona una utilidad llamada keytool que se encuentra en
$JAVA_HOME/bin/keytool que permite, entre otras muchas cosas, listar el contenido de un PFX. Para ello debemos invocar la herramienta con los siguientes parámetros:
keytool -list -v -keystore <fichero.pfx> -storetype PKCS12
A continuación nos solicitará el password del certificado, y nos mostrará una pantalla como la siguiente:
El nombre del alias que debemos usar para pasárselo a la petición sería en este ejemplo el valor:
ad9a0c6f8127a027e1f977ea1b7d3d43_7f64a424-6531-4367-b918-6e8f5ffd2290