atlas_mus_servicios_web.pdf
Post on 06-Jul-2018
216 Views
Preview:
TRANSCRIPT
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
1/101
ATLASMANUAL DE USUARIO
Servicios Web
Versión 2.0
Arquitectura de Software
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
2/101
Framework Atlas
Manual usuario de Servicios Web
2 de 101
Hoja de Control
Título Manual de Usuario Invocador de Servicios
Documento de Referencia NORMATIVA ATLASResponsable Arquitectura de Software
Versión 2.0 Fecha Versión 12/06/2015
Registro de Cambios
Versión Causa del Cambio Responsable del Cambio Fecha
2.0 Reestructuración de documento Unidad de Arquitectura 21/07/2015
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
3/101
Framework Atlas
Manual usuario de Servicios Web
3 de 101
Índice
1. INTRODUCCIÓN ................................................................................................................................................................ 5
1.1. AUDIENCIA OBJETIVO ...................................................................................................................................................... 5 1.2. CONOCIMIENTOS PREVIOS ............................................................................................................................................... 5
2. DESCRIPCIÓN .................................................................................................................................................................... 6
3. ¿QUE SEGURIDAD DEBO IMPLEMENTAR? ............................................................ ................................................... 9
3.1.1. Seguridad de lado del Servidor ................................................................. .............................................................. 9 3.1.2. Seguridad de lado del Cliente ......................................................... .............................................................. ........ 10
4. DESARROLLO DE UN SERVICIO WEB (SERVIDOR) ........................................................ ...................................... 12
4.1. CREACIÓN DE UN SERVIDOR SIN SEGURIDAD (HTTP Y HTTPS SIN CERTIFICADO CLIENTE) ................. 13 4.1.1. Paso 1: Creación del módulo partiendo del Arquetipo de servicio web ....................................................... ........ 13 4.1.2. Paso 2: Creación de la Interfaz del Servicio y clases para los parámetros ......................................................... 13
4.1.3. Paso 3: Implementación del Servicio ....................................................... ............................................................ 15 4.1.4. Paso 4: Configuración del Servicio .......................................................... ............................................................ 16 4.1.5. Paso 5: Cambio del namespace del servicio (si se necesita) ................................................................................ 17 4.1.6. Paso 6: Eliminar Namespaces, Elements y Atributos (Si se necesita) .......................................................... ........ 18 4.1.7. Paso 7: Levantar el Servidor ............................................................................................................. ................... 19 4.1.8. Paso 8: Obtener el wsdl del Servicio ........................................................ ............................................................ 19 4.1.9. Paso 9: Creación de la interfaz para clientes en nuestro servidor ................................................................ ....... 21 4.1.10. Paso 10: Test Unitarios de nuestra libreria Cliente ....................................................... ...................................... 23
4.2. CREACIÓN DE UN SERVIDOR CON VALIDACIÓN DE CERTIFICADO DE CLIENTE ..................................... 26 4.2.1. Paso 1: Alta de la aplicación en la plataforma ASF ....................................................... ...................................... 26 4.2.2. Paso 2: Configuración del Servicio .......................................................... ............................................................ 27 4.2.3. Paso 3: Actualización de configuración en el fichero services.xml ................................................................ ...... 28 4.2.4. Paso 4: Modificación de la interfaz para clientes en nuestro servidor......................................................... ........ 28
4.2.5. Acceso al certificado de cliente (para comprobaciones personalizadas) ..................................................... ........ 29 4.3. CREACIÓN DE UN SERVIDOR CON SEGURIDAD EN MENSAJE – WS-SECURITY ......................................... 30
4.3.1. Paso 1: Alta de la aplicación en la plataforma ASF ....................................................... ...................................... 31 4.3.2. Paso 2: Configuración del Servicio .......................................................... ............................................................ 32 4.3.3. Paso 3: Actualización de configuración en el fichero services.xml ................................................................ ...... 33 4.3.4. Paso 4: Modificación de la interfaz para clientes en nuestro servidor......................................................... ........ 38
4.4. CREACIÓN DE UN SERVIDOR CON WS-SECURITY + CERTIFICADO DE CLIENTE ..................................... 39 4.4.1. Paso 1: Actualización de configuración en el fichero services.xml ................................................................ ...... 40 4.4.2. Paso 2: Modificación de la interfaz para clientes en nuestro servidor......................................................... ........ 40
5. DESARROLLO DE UN SERVICIO WEB (CLIENTE) ........................................................... ...................................... 42
5.1. ATLAS - CREACION DE UN CLIENTE (HTTP Y HTTPS SIN CERTIFICADO CLIENTE) ................................... 42 5.1.1. Paso 1: Inclusión de la dependencia ......................................................................................... ........................... 42 5.1.2. Paso 2: Configuración del contexto de Spring ..................................................................................................... 42 5.1.3. Paso 3: Configuración del endpoint en environment.properties .......................................................... ................ 43
5.2. ATLAS - CREACION DE UN CLIENTE CON VALIDACIÓN DE CERTIFICADO DE CLIENTE ......................... 44 5.2.1. Paso 1: Añadir variables de environment ............................................................ ................................................. 44 5.2.2. Paso 2: Configuración de Spring ............................................................... ........................................................... 45
5.3. ATLAS - CREACION DE UN CLIENTE CON SEGURIDAD EN MENSAJE WS-SECURITY ............................... 47 5.3.1. Paso 1: Añadir variables de environment ............................................................ ................................................. 47 5.3.2. Paso 2: Configuración de Spring ............................................................... ........................................................... 48
5.4. ATLAS - CREACION DE UN CLIENTE CON WS-SECURITY + CERTIFICADO DE CLIENTE .......................... 50 5.4.1. Paso 1: Añadir variables de environment ............................................................ ................................................. 50 5.4.2. Paso 2: Configuración de Spring ............................................................... ........................................................... 52
5.5. WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE (HTTP Y HTTPS).................................................. 55 5.5.1. Paso 1: Incluir fichero wsdl en el proyecto .......................................................................................................... 55 5.5.2. Paso 2: Inclusión de la dependencia y configuración del plugin............................................... ........................... 55 5.5.3. Paso 3: Generación de la clases del Cliente ........................................................ ................................................. 58
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
4/101
Framework Atlas
Manual usuario de Servicios Web
4 de 101
5.5.4. Paso 4: Configuración y uso del Cliente ...................................................................................................... ........ 60 5.6. WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON CERTIFICADO DE CLIENTE ................... 63
5.6.1. Paso 1: Configuración y uso del Cliente ...................................................................................................... ........ 63 5.7. WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON SEGURIDAD WS-SECURITY................... 65
5.7.1. Paso 1: Configuración y uso del Cliente ...................................................................................................... ........ 65 5.8. WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON SEGURIDAD WS-SECURITY +
CERTIFICADO DE CLIENTE................................................................................................................................................. 67 5.8.1. Paso 1: Configuración y uso del Cliente ...................................................................................................... ........ 68
6. CONFIGURACIONES ADICIONALES.......................................................................................................................... 69
6.1.1. Añadir configuración de PROXY a un cliente ...................................................................................... ................ 69 6.1.2. Personalizar configuración de TIMEOUT a un cliente ............................................................. ........................... 70 6.1.3. Llamadas a Servicios Web Con Usuario y Password usando HHTP Basic ......................................................... 71 6.1.4. Configuración de Truststore desde puesto LOCAL .............................................................................................. 73
6.2. MÓDULO DE LOG DE MENSAJES ..................................................................................................................................... 81 6.3. PERSONALIZACIÓN DE MENSAJES DE ERROR .................................................................................................................. 82
6.3.1. Especificación SoapFault SCSPv3 ............................................................. ........................................................... 83
7. CREACION DE TESTS UNITARIOS PARA SOAPUI ........................................................... ...................................... 84
7.1.1. Proyecto SoapUI sin seguridad ...................................................................................... ...................................... 85 7.1.2. Proyecto SoapUI con seguridad https ....................................................... ............................................................ 86 7.1.3. Proyecto SoapUI con seguridad firmado/cifrado ........................................................... ...................................... 88 7.1.4. Tests de SoapUI WS-Security + Transporte con validación de certificado .......................................................... 95
8. ERRORES MÁS COMUNES ........................................................... ................................................................. ................ 97
8.1. NO SE ENCUENTRA EL FICHERO WSDL DE UN SERVICIO ( NO AUTOGENERADO) ..................................................... ........ 97 8.2. NO SE RECONOCE EL MÉTODO EN UN CLIENTE DE AXIS2 EN LA LLAMADA A UN SERVICIO DE AXIS1 ............................. 98 8.3. ERROR AL GENERAR UN CLIENTE DE AXIS2 A PARTÍR DEL WSDL DEL SERVICIO ........................................................... 98 8.4. ERROR AL EJECUTAR PETICIONES A SERVICIOS WEB SEGURO DESDE ENTORNO LOCAL ................................................ 99 8.5. ERROR AL LLAMAR AL UN SERVICIO WEB NO SEGURO ................................................................................................... 99 8.6. GENERACIÓN DE TODAS LAS CLASES NECESARIAS CON WSDL2CODE CON AXIS2 ..................................................... 99
ENLACES RELACIONADOS ...................................................... ................................................................. ......................... 101
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
5/101
Framework Atlas
Manual usuario de Servicios Web
5 de 101
1. INTRODUCCIÓN
En algunas ocasiones es necesario que las aplicaciones ofrezcan determinados Servicios Web tanto a otras
aplicaciones de la Comunidad de Madrid como a agentes externos. Por otra parte muchas de las aplicaciones quese desarrollan para la Comunidad de Madrid necesitan acceder a Servicios Web (tanto servicios que se han
desarrollado específicamente para la tramitación electrónica como otros servicios web que incluso pueden estar
fuera de los entornos de ICM).
En este manual se describe cómo crear servicios web con el framework ATLAS, así como invocar a servicios web
existentes (creados con ATLAS o no). El manual incluye documentación sobre la creación/invocación de servicios
web con seguridad o sin ella.
Para aislar la complejidad de la amplia variedad de tipos de servicios web que nos podemos encontrar y losdistintos tipos de seguridad que nos pueden requerir los citados servicios web se ha desarrollado el componente
Invocador de Servicios de Atlas. Este componente facilita la creación de los clientes de acceso a los servicios
securizados, a través de una sencilla configuración que pueda incluir los requisitos de seguridad requeridos.
1.1. Audiencia objetivo
Este documento está orientado a desarrolladores java que quieran invocar a un servicio web desde un aplicativo
que se desarrolla con Atlas o que quieren generar un servicio web.
1.2. Conocimientos Previos
Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes
tecnologías:
- Spring Framework.
- Servicios Web
- Axis2 y Rampart
- Seguridad (uso básico de certificados)
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
6/101
Framework Atlas
Manual usuario de Servicios Web
6 de 101
2. DESCRIPCIÓN
La invocación y generación de servicios web de ATLAS se basa en los siguientes elementos:
Axis2
Módulo de seguridad RampartMódulo de seguridad para webservices de ATLAS
Para la creación de nuevos servicios web se partirá de un arquetipo específico para servicios web. Los
servicios web desarrollados implementaran además del propio servicio web una librería cliente para dicho servicio
que facilitará la integración de este servicio web en otros proyectos Atlas. Para implementar un servicio web es
necesario:
Definir la interfaz del Servicio (Como una clase Java)
Implementar en el servicio web dicha interfaz
Implementar un cliente del servicio web
A continuación se muestra un diagrama de clases para un ejemplo de un servicio llamado MiPrimerService:
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
7/101
Framework Atlas
Manual usuario de Servicios Web
7 de 101
Para el desarrollo de un cliente de un servicio web se van a distinguir dos casos:
Servicios web desarrollados con Atlas
Servicios web externos o no desarrollados con Atlas. En este último caso se utiliza el cliente dinámico de
Axis2, que está basado en la clase RPCServiceClient y permite hacer llamadas a servicios web de forma
sencilla, sin necesidad de generación de clases compiladas (a través del descriptor WSDL del servicio y las
herramientas de Axis2).
En los servicios web podemos distinguir los distintos tipos de accesos:
Acceso público
Servicio de acceso libre. No se realiza ningún tipo de control sobre el cliente. El canal de comunicación no está
cifrado.
Servidor WSCliente WS
HTTP
Acceso público securizado
Servicio de acceso libre.
No se realiza ningún tipo de control sobre el cliente.
Canal cifrado de comunicación.
Para establecer la comunicación el cliente debe confiar en el certificado del servidor.
Servidor WSCliente WS
HTTPS
Trusted CA SSL Server
Acceso privado con certificado digital cliente
Servicio de acceso restringido. Se realiza control de acceso sobre el cliente identificado por el certificado digital
requerido. Canal cifrado de comunicación.
Para establecer la comunicación el cliente y servidor deben confiar en sus respectivos certificados. Es habitual
que el cliente utilice un tipo de certificado cliente denominado “de componente” (no personal).
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
8/101
Framework Atlas
Manual usuario de Servicios Web
8 de 101
Servidor WSCliente WS
HTTPS
Client trusted
Server trusted de la CAM
Servidores Web Caché
SSL Client SSL ServerServer trusted
WS-Security: Mensaje SOAP firmado y cifrado
El mensaje SOAP se firma y cifra para garantizar la integridad de los datos enviados. Se puede realizar elcontrol de acceso sobre el cliente que ha firmado el mensaje. Al cifrar el mensaje no es necesario cifrar el
canal de comunicación.
Dentro del framework Atlas se soportan todos estos tipos de accesos y en este documento se describirán como
implementarlos tanto en la parte cliente como en la servidora. Cualquier otro tipo de acceso o de seguridad que se
requiera implementar que sea distinto de los anteriores ha de ser autorizado previamente por el área de
arquitectura de ICM.
Este documento se divide en dos partes bien diferenciadas:- Desarrollo de un servicio web
- Desarrollo de un cliente de un servicio web
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
9/101
Framework Atlas
Manual usuario de Servicios Web
9 de 101
3. ¿QUE SEGURIDAD DEBO IMPLEMENTAR?
Antes de la creación de un servicio web, es importante tener claro la seguridad que debemos implementar, en casode tener que hacerlo.
3.1.1. Seguridad de lado del Servidor
Si debemos crear un servidor, tendremos los siguientes posibles opciones de seguridad:
HTTP + Mensajes sin seguridad: El servicio estará disponible vía http y los mensajes que viajan no van ni
cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 4.1:
CREACIÓN DE UN SERVIDOR SIN SEGURIDAD (HTTP y HTTPS SIN CERTIFICADO CLIENTE)
HTTPS + Mensajes sin seguridad: El servicio estará disponible vía https sin ningún otro requerimientopara nuestros clientes y los mensajes que viajan no van ni cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 4.1:
CREACIÓN DE UN SERVIDOR SIN SEGURIDAD (HTTP y HTTPS SIN CERTIFICADO CLIENTE)
HTTPS con certificado + Mensajes sin seguridad: El servicio estará disponible vía https y, como
servidores, exigiremos que el certificado de los clientes que se conectan sea válido (y otras validaciones
opcionales) y los mensajes que viajan no van ni cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 4.2:
CREACIÓN DE UN SERVIDOR CON VALIDACIÓN DE CERTIFICADO DE CLIENTE
HTTP + Mensajes con seguridad: El servicio estará disponible vía http y los mensajes viajan cifrados,
firmados o ambas.
Para este caso, seguiremos el manual en el punto 4.3:
CREACIÓN DE UN SERVIDOR CON SEGURIDAD EN MENSAJE – WS-SECURITY
HTTPS + Mensajes con seguridad: El servicio estará disponible vía https y los mensajes viajan cifrados,
firmados o ambas.Para este caso, seguiremos el manual en el punto 4.3:
CREACIÓN DE UN SERVIDOR CON SEGURIDAD EN MENSAJE – WS-SECURITY
HTTPS con certificado + Mensajes con seguridad: El servicio estará disponible vía https y, como
servidores, exigiremos que el certificado de los clientes que se conectan sea válido (y otras validaciones
opcionales) y los mensajes viajan cifrados, firmados o ambas.
Para este caso, seguiremos el manual en el punto 4.4:
CREACIÓN DE UN SERVIDOR CON WS-SECURITY + CERTIFICADO DE CLIENTE
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
10/101
Framework Atlas
Manual usuario de Servicios Web
10 de 101
3.1.2. Seguridad de lado del Cliente
Si debemos crear un cliente para consumir un servicio, tendremos que diferenciar entre clientes Atlas y clientes No Atlas (Servicios web Externos).
WS Atlas - HTTP + Mensajes sin seguridad: Al servicio al que nos conectamos se accede a través de
HTTP y los mensajes que viajan no van ni cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 5.1:
ATLAS - CREACION DE UN CLIENTE (HTTP y HTTPS SIN CERTIFICADO CLIENTE)
WS Atlas - HTTPS + Mensajes sin seguridad: Al servicio al que nos conectamos se accede a través de
HTTPS, como clientes no nos requieren certificado al conectar y los mensajes que viajan no van ni cifrados
ni firmados.Para este caso, seguiremos el manual en el punto 5.1:
ATLAS - CREACION DE UN CLIENTE (HTTP y HTTPS SIN CERTIFICADO CLIENTE)
WS Atlas – HTTPS con certificado + Mensajes sin seguridad: Al servicio al que nos conectamos se
accede a través de HTTPS y el servidor requiere que, como clientes, nos identifiquemos con un certificado.
Los mensajes que viajan no van ni cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 5.2:
ATLAS - CREACION DE UN CLIENTE CON VALIDACIÓN DE CERTIFICADO DE CLIENTE
WS Atlas – HTTP + Mensajes con seguridad: Al servicio al que nos conectamos se accede a través de
HTTP y los mensajes que viajan van cifrados, firmados o ambas.
Para este caso, seguiremos el manual en el punto 5.3:
ATLAS - CREACION DE UN CLIENTE CON SEGURIDAD EN MENSAJE WS-SECURITY
WS Atlas – HTTPS + Mensajes con seguridad: Al servicio al que nos conectamos se accede a través de
HTTPS, como clientes no nos requieren certificado al conectar y los mensajes que viajan van cifrados,
firmados o ambas.Para este caso, seguiremos el manual en el punto 5.3:
ATLAS - CREACION DE UN CLIENTE CON SEGURIDAD EN MENSAJE WS-SECURITY
WS Atlas – HTTPS con certificado + Mensajes con seguridad: Al servicio al que nos conectamos se
accede a través de HTTPS y el servidor requiere que, como clientes, nos identifiquemos con un certificado.
Los mensajes que viajan van cifrados, firmados o ambas.
Para este caso, seguiremos el manual en el punto 5.4:
ATLAS - CREACION DE UN CLIENTE CON WS-SECURITY + CERTIFICADO DE CLIENTE
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
11/101
Framework Atlas
Manual usuario de Servicios Web
11 de 101
WS Externo – HTTP + Mensajes sin seguridad: Al servicio al que nos conectamos se accede a través de
HTTP y los mensajes que viajan no van ni cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 5.5:
WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE (HTTP y HTTPS)
WS Externo – HTTPS + Mensajes sin seguridad: Al servicio al que nos conectamos se accede a través
de HTTPS, como clientes no nos requieren certificado al conectar y los mensajes que viajan no van ni
cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 5.5:
WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE (HTTP y HTTPS)
WS Externo – HTTPS con certificado + Mensajes sin seguridad: Al servicio al que nos conectamos se
accede a través de HTTPS y el servidor requiere que, como clientes, nos identifiquemos con un certificado.
Los mensajes que viajan no van ni cifrados ni firmados.
Para este caso, seguiremos el manual en el punto 5.6:
WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON CERTIFICADO DE CLIENTE
WS Externo – HTTP + Mensajes con seguridad: Al servicio al que nos conectamos se accede a través
de HTTP y los mensajes que viajan van cifrados, firmados o ambas.
Para este caso, seguiremos el manual en el punto 5.7:WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON SEGURIDAD WS-SECURITY
WS Externo – HTTPS + Mensajes con seguridad: Al servicio al que nos conectamos se accede a través
de HTTPS, como clientes no nos requieren certificado al conectar y los mensajes que viajan van cifrados,
firmados o ambas.
Para este caso, seguiremos el manual en el punto 5.7:
WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON SEGURIDAD WS-SECURITY
WS Externo – HTTPS con certificado + Mensajes con seguridad: Al servicio al que nos conectamos se
accede a través de HTTPS y el servidor requiere que, como clientes, nos identifiquemos con un certificado.
Los mensajes que viajan van cifrados, firmados o ambas.
Para este caso, seguiremos el manual en el punto 5.8:
WS EXTERNOS (NO ATLAS) - CREACIÓN DE UN CLIENTE CON SEGURIDAD WS-SECURITY + CERTIFICADODE CLIENTE
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
12/101
Framework Atlas
Manual usuario de Servicios Web
12 de 101
4. DESARROLLO DE UN SERVICIO WEB (SERVIDOR)
En este apartado se muestra cómo crear un servicio web con el framework ATLAS, así como el procedimiento para
aportar seguridad al servicio web (integrándose con la plataforma ASF).
Para el desarrollo de servicios web el framework se apoya en las siguientes tecnologías:
Axis 2: Framework java para desarrollo de servicios web de la ASF (Apache Software Foundation).
Rampart: Módulo de seguridad de Axis 2.
Wss4j: Implementación estándar de seguridad en servicios web.
Xmlsec: Estándar de seguridad para ficheros XML en que se basa el estándar WSS (Web Services
Security).
Además de esto, el framework ATLAS aporta los siguientes elementos propios:Arquetipo de generación de proyectos de tipo servicio web. La generación de proyectos para servicios
web es muy sencilla a través del arquetipo ATLAS destinado a tal efecto. En este manual se muestra cómo
crear un servicio web a partir del arquetipo.
Módulo de seguridad para integración con la plataforma de seguridad ASF 5. En este documento
también se muestra cómo configurar un arquetipo para integrarse con dicha plataforma.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
13/101
Framework Atlas
Manual usuario de Servicios Web
13 de 101
4.1. CREACIÓN DE UN SERVIDOR SIN SEGURIDAD (HTTP y HTTPS SIN CERTIFICADO CLIENTE)
En los siguientes sub-apartados se muestra cómo crear un proyecto servicio web con el framework Atlas, sinningún tipo de seguridad a nivel de mensaje (ws-security) ni comprobaciones de certificados de cliente. Estaconfiguración acepta tanto http como https siempre y cuando no exista validación de certificado de cliente (se
aceptan todos los clientes que se conecten).
4.1.1. Paso 1: Creación del módulo partiendo del Arquetipo de servicio web
El framework ATLAS tiene disponible un arquetipo preconfigurado y preparado para la creación de proyectos de
servicios web. El uso de este arquetipo genera una primera versión de proyecto con clases demostrativas del uso y
funcionalidad.
Para la creación de proyecto de servicio web partiendo de un arquetipo consultar el manual
“ ATLAS_MUS_Arquetipo_WebService” . Una vez generado el arquetipo según se indica en este manual, proseguir
con los pasos indicados en este apartado.
ATENCION
La creación de servicios web debe ser realizada siempre en base al arquetipo ’atlasfrm-
arquetipos-generador-servicioweb ’ , según se explica en el manual
“ATLAS_MUS_Arquet ipo_WebService ”
El arquetipo de servicio web de ATLAS generará un proyecto modular, que contiene tres módulos:- web: El servicio web expuesto.
- test: tests de SoapUI para el servicio web.
- lib: Librería (jar) que contiene las clases que definen el interfaz del servicio web a exponer, así como
los objetos de dominio. Se han separado estas clases en una librería aparte porque esta librería podrá
ser utilizada en otros proyectos para invocar al servicio web.
El arquetipo de servicio web contiene un ejemplo de servicio web llamado EjemploServicio.
ATENCION
Las clases de servicio que se van a crear son las mismas que las que se definen en la capa de
servicios de la normativa de Atlas, por lo tanto les aplica la misma normativa.
4.1.2. Paso 2: Creación de la Interfaz del Servicio y clases para los parámetros
La interfaz del servicio debe ser creada dentro del módulo l ib , de esta forma es compartido por el servicio web y
por la aplicación cliente del servicio web. El módulo web contiene una dependencia del módulo l ib de forma que
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
14/101
Framework Atlas
Manual usuario de Servicios Web
14 de 101
las clases del módulo l ib estarán accesibles desde el web.
ATENCION
La creación de las clases que representan la interfaz del servicio web se realizará dentro delmódulo lib del proyecto.
Por ejemplo nos creamos la interfaz siguiente:
Clase lib/src/main/java/xxxx/services/MiPrimerService.java
package prueba123.services;
import atlas.core.exceptions.ServiceException;
public interface MiPrimerService {
String getFechaString() throws ServiceException;
}
Tal y como indica la normativa de Atlas con respecto a los servicios todos los métodos deben lanzan
ServiceException cuando ocurre algún problema.
Si la interfaz del servicio incluye parámetros que no son tipo básicos hay que crear una clase para cada uno de los
parámetros.
En la interfaz EjemploServic io que se incluye de ejemplo en el arquetipo, se define un objeto de entrada llamado
DatosEntrada y un objeto de salida, llamado DatosSalida . Estos objetos de datos tienen que ser creados en el
módulo l ib del cliente ya que serán usados tanto por el cliente y por el servicio web.
ATENCION
La creación de las clases que representan los objetos de entrada/salida del servicio web se
realizará dentro del módulo lib del proyecto. Además estos objetos no pueden ser objetos de
dominio de Hibernate sino simples POJOS y serializables.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
15/101
Framework Atlas
Manual usuario de Servicios Web
15 de 101
A continuación se muestra el código de alguno de estos objetos:
Clase lib/src/main/java/xxxx/domain/DatosEntrada.java
public class DatosEntrada implements Serializable { private static final long serialVersionUID = -4672740919183330887L;String cadena1;Integer limite = -1;
public String getCadena1() {return cadena1;
} public void setCadena1(String cadena1) {
this.cadena1 = cadena1;}
public Integer getLimite() {return limite;
}
public void setLimite(Integer limite) {this.limite = limite;}
}
4.1.3. Paso 3: Implementación del Servicio
Una vez creada la interfaz del servicio, debemos proceder a crear la clase que implementa dicha interfaz.
La implementación del servicio web tendrá las siguientes características:
Se creará en el módulo web del proyecto.
Residirá en el mismo paquete que la interfaz del servicio en el módulo de cliente.
Su nombre será el de la interfaz de servicio acabado en „I mpl’ siguiendo la normativa de
creación de servicios de ATLAS.
Incluirá la anotación @Service
ATENCION
La creación de las clases que implementan el servicio web se realizará dentro del módulo web
del proyecto, y pertenecerán al mismo paquete que las interfaces que implementan.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
16/101
Framework Atlas
Manual usuario de Servicios Web
16 de 101
A continuación mostramos una implementación de ejemplo:
Clase lib/src/main/java/xxxx/services/MiPrimerServiceImpl.java
package prueba123.services;
import org.springframework.stereotype.Service;
import atlas.core.exceptions.ServiceException;
@Service public class MiPrimerServiceImpl implements MiPrimerService{
@Override public String getFechaString() throws ServiceException {
return "fecha";}
}
4.1.4. Paso 4: Configuración del Servicio
Para que el servicio web esté accesible será necesario realizar dos configuraciones:
Definir un bean en el contexto de Spring para la clase implementada del Servicio en el fichero
web/src/main/resources/conf/applicationContext-services.xml,
Fichero web/src/main/resources/conf/applicationContext-services.xml
[...]
Definir el servicio en el fichero de axis web/src/main/webapp/WEB-INF/services.xml.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
17/101
Framework Atlas
Manual usuario de Servicios Web
17 de 101
En el fichero service.xml están todas las definiciones de servicios web que necesita Axis2. Cada tag
define un webservice diferente.
Fichero web/src/main/webapp/WEB-INF/services.xml
[...]
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier miPrimerService prueba123.services.MiPrimerService
[...]
Se ha de incluir un tag de service como el que se muestra de ejemplo modificando los siguientes parámetros:
Spr ingBeanName : nombre del bean que se definió en el fichero applicationContext-services.xml .
ServiceClass : Nombre de la clase (con su paquete correspondiente) que representa el interfaz del
servicio (se utiliza para la construcción del descriptor WSDL).
4.1.5. Paso 5: Cambio del namespace del servicio (si se necesita)
Si se quiere modificar el namespace del servicio web generado por defecto se hace modificando las propiedadesxmlns:ns y targetNamespace y añadiendo el tag
Por ejemplo para cambiarlo a http://salud.madrid.org/IntegracionHorus
Fichero web/src/main/webapp/WEB-INF/services.xml
[...]
[...]
[...]
http://salud.madrid.org/IntegracionHorus%22http://salud.madrid.org/IntegracionHorus%22%3Ehttp://salud.madrid.org/IntegracionHorus%22/%3Ehttp://salud.madrid.org/IntegracionHorus%22/%3Ehttp://salud.madrid.org/IntegracionHorus%22/%3Ehttp://salud.madrid.org/IntegracionHorus%22%3Ehttp://salud.madrid.org/IntegracionHorus%22
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
18/101
Framework Atlas
Manual usuario de Servicios Web
18 de 101
4.1.6. Paso 6: Eliminar Namespaces, Elements y Atributos (Si se necesita)
ATENCION
Para hacer los cambios propuestos en este punto se deberá pedir una autorización excepcional
a Arquitectura explicando la necesidad de usarlo, ya que un cambio en la respuesta XML de un
Web Service puede hacer que los clientes no puedan leerla correctamente
Si se quiere modificar cualquier parte del xml de respuesta que se envía como respuesta del servicio se deberá
hacer uso del patrón “message exchange pattern” (MEP) creando una clase que implemente la clase abstracta
AtlasInOutMessageReceiver y hacer un Override del método “modif icarRespuesta ”, esta clase se deberá indicar
en el Services.xml en a nivel de todo el servicio o solo a nivel de una operación, a continuación se ponen ambos
ejemplos:
Fichero web/src/main/webapp/WEB-INF/services.xml
[...]
. . .
[...]
Fichero web/src/main/webapp/WEB-INF/services.xml
[...]
. . .
[...]
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
19/101
Framework Atlas
Manual usuario de Servicios Web
19 de 101
La clase MiInterceptor sería de la siguiente forma:
MiInterceptor .java
package ws128.services;
import atlas.clientews.client.AtlasInOutMessageReceiver;
public class MiInterceptor extends AtlasInOutMessageReceiver {
@Override
public String modificarRespuesta(String respuesta) {
//Estos reemplazos son solo de ejemplo
respuesta = respuesta.replaceAll("
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
20/101
Framework Atlas
Manual usuario de Servicios Web
20 de 101
Este wsdl se ha de guardar en el módulo test en la carpeta test/src/main/resources/wsdl con el nombre delservicio y la extensión wsdl. Ej: MiServicioWeb.wsdl.
En el caso de que el servicio web se construya a partir de un wsdl predeterminado (que no hay sido generada por
Axis) al intentar acceder al wsdl se obtiene el siguiente error:
Unable to generate WSDL 1.1 for this serviceIf you wish Axis2 to automatically generate the WSDL 1.1, then please set
useOriginalwsdl as false in your services.xml
Para poder obtener correctamente el wsdl es necesario realizar lo siguiente:
1. - Si el WSDL predeterminado del servicio es un solo fichero, se ha de hacer losiguiente:
a.- En el fichero WEB-INF/services.xml, en la definición del servicio se coloca el siguienteparámetro:
true
b.- Para que el fichero WSDL pueda ser localizado y entregado, este ha de dejarse, con elnombre del servicio en el directorio WEB-INF.
Un ejemplo, si tengo el servicio 'EjemploServicio', además del parámetro 'useOriginalwsdl'tendrá que haber un fichero:
---->WEB-INF/EjemploServicio.wsdl
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
21/101
Framework Atlas
Manual usuario de Servicios Web
21 de 101
En este caso el wsdl se obtendría con la URL:
http://localhost:9080/services/EjemploServicio?wsdl
2. - Si el WSDL consta de varios ficheros, además del parámetro 'useOriginalwsdl' en la
definición del servicio, este ha de generarse en formato aar o 'exploded' (contenido del aardescomprimido). La esctructura en formato 'exploded' sería la siguiente (conEjemploServicioNoSeguro):
---->WEB-INF-------->services------------>EjemploServicio---------------->META-INF-------------------->services.xml (descriptor del servicio)-------------------->service.wsdl-------------------->parte1.xsd-------------------->parte2.xsd
En este ejemplo, el fichero service.wsdl tiene sentencias:
En este caso el wsdl se obtendría con la URL:
http://localhost:9080/services/EjemploServicio?wsdl [^]
y cada una de los ficheros xsd con la URL:
http://localhost:9080/services/EjemploServicio?xsd=parte1.xsd [^] http://localhost:9080/services/EjemploServicio?xsd=parte2.xsd [^]
En el caso de tener un WSDL predeterminado para el servicio, además será necesario editar el fichero
weblogic.xml y añadir la siguiente línea (marcada en amarillo):
Fichero web/src/main/webapp/WEB-INF/weblogic.xml
true
true
4.1.9. Paso 9: Creación de la interfaz para clientes en nuestro servidor
Una vez creado el servicio web ahora vamos a crear el cliente que se distribuirá con una librería para que las
aplicaciones que tengan que integrarse con nuestra aplicación lo hagan utilizando esta librería.
Los clientes de servicio web ATLAS se caracterizan por que no se generan a partir de un descriptor WSDL del
servicio sino que se parte de la clase de la interfaz del servicio y de las clases que representen a los parámetros
http://localhost:9080/services/EjemploServicio?wsdlhttp://localhost:9080/services/EjemploServicio?wsdlhttp://localhost:9080/services/EjemploServicio?wsdlhttp://localhost:9080/services/EjemploServicio?wsdlhttp://localhost:9080/services/EjemploServicioNoSeguro?wsdlhttp://localhost:9080/services/EjemploServicioNoSeguro?wsdlhttp://localhost:9080/services/EjemploServicioNoSeguro?wsdlhttp://localhost:9080/services/EjemploServicio?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicio?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicio?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicio?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicio?xsd=parte2.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicio?xsd=parte1.xsdhttp://localhost:9080/services/EjemploServicioNoSeguro?wsdlhttp://localhost:9080/services/EjemploServicio?wsdlhttp://localhost:9080/services/EjemploServicio?wsdl
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
22/101
Framework Atlas
Manual usuario de Servicios Web
22 de 101
del mismo. La invocación a los métodos del servicio web va a ser dinámica. Para facilitar esta invocación dinámica
dentro del framework Atlas existen dos clases base para la creación de clientes de servicio web, en el caso actual
hablamos de clientes no seguros y clientes seguros sin validación de certificado de cliente.
AtlasUnsecuredWSClient: esta clase es la utilizada para servidores sin seguridad a nivel de mensaje oseguridad HTTPS sin validación de certificado de cliente (Todos los clientes pueden conectar) ;
Realizamos una interfaz como el siguiente ejemplo:
ClienteMiPrimerService.java
package prueba.client;
import java.util.Properties;import prueba.services.MiPrimerService;
import atlas.clientews.client.AtlasUnsecuredWSClient;import atlas.core.exceptions.ServiceException;
public class ClienteMiPrimerService extends AtlasUnsecuredWSClient implements MiPrimerService{
/** Constructor que recibe como parámetro el endpoint del servicioSe le pasará en el fichero de contexto de Spring y lo cogerá del ficheroenviroment.properties
**/ public ClienteMiPrimerService(String endpoint) {
super(endpoint, "http://services.prueba123");}
/** Propiedades */ private Properties properties;
@Override public String getFechaString() throws ServiceException {
return invoke("getFechaString", properties, String.class);}
/** * Establece el valor de las propiedades * @param properties las propiedades */
public void setProperties(Properties properties) {this.properties = properties;
}}
La clase cliente a implementar debe cumplir las siguientes condiciones:
1) Se crea en el paquete xxxx.client dentro del módulo lib.
2) Se llama según la siguiente nomenclatura ClienteyyyyService. java . Ejpl: ClienteMiPrimerService.
3) Extiende la clase base a utilizar, en este caso AtlasUnsecuredWSClient.
4) Implementa la interfaz del servicio para proporcionar una implementación de todos los métodos de este.
5) El constructor toma como parámetro la URL del servicio. Dejar el namespace del servicio igual que se ha
generado en los ejemplos del arquetipo, no modificar este valor.
6) Los métodos implementados de la interfaz de servicio llevan la anotación @Override para que el
compilador pueda detectar posibles errores en el nombre de estos.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
23/101
Framework Atlas
Manual usuario de Servicios Web
23 de 101
7) Las llamadas al servicio web se realizan a través del método invoke con los parámetros definidos en su
javadoc:
Definición del método invoke
/** * Realiza la invocación del servicio web * @param parametrización del tipo de objeto a devolver. * @param methodName método de webservice a llamar * @param serviceProperties propiedades de llamada del servicio web * @param returnType tipo a retornar por la llamada * @param parameters parametros de llamada* @return respuesta del webservice * @throws ServiceException si hubo algún tipo de problema en la llamada */
protected E invoke(String methodName, Properties serviceProperties,Class returnType, Object... parameters)
throws ServiceException {
En caso de que el método de llamada acepte más de un parámetro de entrada, se deberá realizar la llamada al
método invoke de la siguiente forma:
Llamada al método invoke con varios parámetros
@Override public DatosSalida alterar(DatosEntrada entrada1, String entrada2)
throws ServiceException {
return invoke("alterar", properties, DatosSalida.class, entrada1, entrada2);}
1) Las propiedades del servicio se almacenan en una variable interna de la clase ya que es necesario
pasarlas en cada llamada a la clase base AtlasUnsecuredWSClient. Es necesario también que esté
implementado el método setProperties tal cuál viene en el ejemplo. En casos generales, no será necesario
especificar ningún parámetro en las propiedades del servicio, siempre que no se envíen ficheros adjuntos
(en caso afirmativo debe establecerse enableMTOM a „true’ ) y no se haga uso de otros módulos de Axis2
como por ejemplo „addressing’. A continuación se muestran las propiedades que se pueden utilizar:
Parámetro Descripcion Valor por Defecto
repositoryRoot Raíz del repositorio de módulos de Axis2 "./META-INF/"
enableMTOM Habilitar optimización de envío de binarios. false
4.1.10. Paso 10: Test Unitarios de nuestra libreria Cliente
Los tests unitarios que habrán de realizarse dentro de la librería deben comprobar la correcta comunicación con el
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
24/101
Framework Atlas
Manual usuario de Servicios Web
24 de 101
webservice en cada uno de los métodos de llamada de que disponga. Para la creación de dichos tests se utilizará,
como es norma en el framework ATLAS, la librería java jUn it 4 . Para facilitar la creación del contexto de Spring las
clases de test heredarán de la clase AbstractJUnit4SpringContextTests.
NOTA
Con el arquetipo recien generado todos los métodos de los test de JUnit incluyen la anotación @Ignore y no se
ejecutarán en el proceso de construcción de la librería cliente (serán ignorados). Una vez creada e instalada la
librería en el repositorio local (mvn clean insta l l ), se podrá eliminar la anotación @Ignore de cualquier método
que se desee testear, y ejecutar el test con el comando mvn test (el módulo de servidor web debe estar
arrancado también para que el test sea correcto).
El código de prueba de una clase de test de ejemplo es el siguiente (definida en l ib/src/test/ java ):
lib/src/test/java/ClienteMiPrimerServiceTest.java
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
25/101
Framework Atlas
Manual usuario de Servicios Web
25 de 101
package prueba.client;
import static org.junit.Assert.*;
import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import prueba.services.MiPrimerService;
@ContextConfiguration(locations = {"classpath:/conf/applicationContext-test.xml" }) public class ClienteMiPrimerServiceTest extends AbstractJUnit4SpringContextTests {
// Autowired solo permitido en clases de tests unitarios @Autowired @Qualifier("miPrimerService")
private MiPrimerService service;
public void setService(MiPrimerService service) {this.service = service;
}
@Test public void testGetFechaString() {
assertNotNull("El servicio es nulo", service);String salida = null;try {
salida = service.getFechaString();} catch (Exception e){
e.printStackTrace();
fail("Error en la llamada");}assertNotNull(salida);System.out.println("** Salida: " + salida);
}
}
Se ha marcado en color amarillo la llamada al invocador dinámico creado anteriormente.
En este ejemplo, se ha creado un test unitario que recoge la instancia del invocador concreto de Spring. A travésde Spring también se está pasando una URL concreta de servicio para testear. Además de implementar el test,
para probar el cliente es necesario configurar el endpoint en el contexto de Spring de los tests, modificando el
fichero l ib /src/test/resources//environment.properties, según se muestra en el ejemplo incluido en el arquetipo:
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
26/101
Framework Atlas
Manual usuario de Servicios Web
26 de 101
lib/src/test/resources/environment.properties
[...]
# Datos de WS miPrimerService.endpoint=http://localhost:9080/services/MiServicioWeb
[...]
Este test se puede ejecutar desde el propio Eclipse como cualquier test unitario, pero hay que tener en cuenta que
hay que tener levantado el servicio web.
4.2. CREACIÓN DE UN SERVIDOR CON VALIDACIÓN DE CERTIFICADO DE CLIENTE
En los servicios web en los que haya que implementar seguridad a nivel de transporte HTTPS y sea necesario la
validación de los clientes que se conectan, es necesaria configurar nuestro servidor para que verifique el cliente
conectado contra la plataforma de ASF. Para ello hay que realizar los siguientes pasos.
ATENCION
Esta configuración es para conexiones seguras HTTPS en las que el servidor verifica los
clientes conectados contra ASF.Si se precisa una conexión segura (HTTPS) sin este tipo de validaciones (permitiendo a todos
los clientes conectarse), consultar el apartado previo:
“CREACIÓN DE UN SERVIDOR SIN SEGURIDAD (HTTP y HTTPS SIN CERTIFICADO
CLIENTE)”
4.2.1. Paso 1: Alta de la aplicación en la plataforma ASF
Antes de configurar la aplicación, debemos darla de alta en el entorno ASF y configurarla. Para el entorno de
desarrollo, esto se debe realizar mediante una consulta a la Unidad de Arquitectura de Aplicaciones en la categoría
de ASF a través de la web de soporte. Para el resto de entornos (validación, producción, etc.) se incluye dicha
información en la ficha de entrega.
La información que se ha de incluir en la solicitud es la siguiente:
- operación : WSS - seguridad servicio web
- aplicación : Nombre de aplicación que se desea dar de alta en ASF
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
27/101
Framework Atlas
Manual usuario de Servicios Web
27 de 101
- certificado de servidor a utilizar : Indicar qué certificado de servidor se desea utilizar, o si se quiere
utilizar uno genérico.
A continuación se muestra un ejemplo de solicitud:
Ejemplo de solicitud a la Unidad de Arquitectura de Aplicaciones
Operacion: WSS - seguridad servicio web Aplicacion: EJPL_WS_SERVIDORCertificado de servidor: certificado genérico
Como respuesta a la solicitud, la Unidad de Arquitectura de Aplicaciones contestará con un mensaje como este:
Ejemplo de respuesta de la Unidad de Arquitectura de Aplicaciones
Se han realizado actuaciones en la plataforma ASF 5.0 para definir servidor y cliente del alta solicitada para el
módulo "EJPL_WS_SERVIDOR".
Los datos para configurar los desarrollos son los siguientes:
- SERVIDOR
> ID de aplicación ASF: EJPL_WS_SERVIDOR
> alias "localkey": servidor_ws
- CLIENTE
> ID de aplicación ASF: EJPL_WS_CLIENTE> alias "localkey": cliente_ws
> alias "remotekey": servidor_ws_cert
En la respuesta se mostrarán los datos de configuración necesarios para el servicio web (apartado SERVIDOR) y
para las pruebas unitarias del cliente en el módulo lib (apartado CLIENTE).
4.2.2. Paso 2: Configuración del Servicio
Una vez que se ha dado de alta en ASF y con los de SERVIDOR tenemos que incluir en el fichero
src/main/resources/environment.proper t ies lo siguiente:
src/main/resources/environment.properties
# Ids de aplicacion app.id.asf=EJPL_WS_SERVIDOR# Parametros de WS
El valor de la variable app.id.asf es el identificador de la aplicación en la plataforma ASF (debe ser igual que laaplicación dada de alta en ASF). Este dato se corresponde con el ID de aplicación en el apartado SERVIDOR de la
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
28/101
Framework Atlas
Manual usuario de Servicios Web
28 de 101
respuesta de la Unidad de Arquitectura de Aplicaciones.
4.2.3. Paso 3: Actualización de configuración en el fichero services.xml
En la lista de parámetros:
Fichero web/src/main/webapp/WEB-INF/services.xml
...${app.id.asf}
Donde dicha variable se corresponde con el código ASF de nuestra aplicación registrada en ASF.
Además, se añade el transporte HTTPS dentro del mismo fichero:
Fichero web/src/main/webapp/WEB-INF/services.xml
…
https
…
Y por último, se importa el módulo de seguridad de atlas:
Fichero web/src/main/webapp/WEB-INF/services.xml
Esta configuración en nuestro servidor, hará que los clientes que se conecten sean verificados contra ASF
4.2.4. Paso 4: Modificación de la interfaz para clientes en nuestro servidor
Una vez creado el servicio web ahora vamos a crear el cliente que se distribuirá con una librería para que las
aplicaciones que tengan que integrarse con nuestra aplicación lo hagan utilizando esta librería.
Los clientes de servicio web ATLAS se caracterizan por que no se generan a partir de un descriptor WSDL del
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
29/101
Framework Atlas
Manual usuario de Servicios Web
29 de 101
servicio sino que se parte de la clase de la interfaz del servicio y de las clases que representen a los parámetros
del mismo. La invocación a los métodos del servicio web va a ser dinámica. Para facilitar esta invocación dinámica
dentro del framework Atlas existen varias clases base para la creación de clientes de servicio web, en el caso
actual hablamos de clientes seguros con validación de certificado.
AtlasHttpsWSClient: esta clase es la utilizada para servidores con seguridad a nivel de transporte HTTPS
y certificado de cliente
Por lo tanto, nuestra interfaz en vez de extender de AtlasUnsecuredWSClient, extenderá de AtlasHttpsWSClient,
por ejemplo así:
ClienteMiPrimerService.java package prueba.client;
import java.util.Properties;import prueba.services.MiPrimerService; import atlas.clientews.client.AtlasHttpsWSClient; import atlas.core.exceptions.ServiceException;
public class ClienteMiPrimerService extends AtlasHttpsWSClient implements MiPrimerService{
/** Constructor que recibe como parámetro el endpoint del servicioSe le pasará en el fichero de contexto de Spring y lo cogerá del ficheroenviroment.properties
**/
public ClienteMiPrimerService(String endpoint) {super(endpoint, "http://services.prueba123");}
/** Propiedades */ private Properties properties;
@Override public String getFechaString() throws ServiceException {
return invoke("getFechaString", properties, String.class);}
/** * Establece el valor de las propiedades * @param properties las propiedades
*/ public void setProperties(Properties properties) {
this.properties = properties;}
}
4.2.5. Acceso al certificado de cliente (para comprobaciones personalizadas)
Hemos configurado un servicio web para que los clientes que conectan sean verificados contra ASF.. Sin embargo,
el servicio web puede tener otros requisitos de seguridad respecto del cliente, como saber si el certificado que
conecta, aun siendo aceptado por ASF, es válido para nuestro servicio.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
30/101
Framework Atlas
Manual usuario de Servicios Web
30 de 101
Dentro del código del servicio web es sencillo recoger el certificado digital cliente de firma, tal y como se muestra a
continuación:
Obtención del certificado de cliente del mensaje entrante
@Service public class EjemploServicioImpl implements EjemploServicio {
... private void getClientCertificate() {
try {String cert = AtlasRampartUtils.getSigningCert();log .info("Certificado de firma: \n\n" + cert + "\n\n");
} catch (AtlasSecurityException e) {log .error("Error al capturar certificado de firma.", e);
}}
}
En el ejemplo anterior se ha marcado en amarillo la sentencia con la que se recoge el certificado de firma del
mensaje del cliente (el resto del código es solo un ejemplo de implementación). Hay que tener las siguientes
consideraciones:
Si el mensaje no contiene seguridad, se devolverá un valor nu l l .
Si se produce algún problema en la exploración del mensaje entrante para la captura del certificado, se
devolverá una excepción At lasSecur i tyExcept ion .
Si se desea obtener los datos de este certificado, será necesario realizar las llamadas correspondientes al
servicio de ASF de ATLAS (CryptService.getDatosCert i f icado(Str ing) ). Para más información, consultar
el documento ATLAS_MUS_Servicio_Cert i f icados.doc .
4.3. CREACIÓN DE UN SERVIDOR CON SEGURIDAD EN MENSAJE – WS-SECURITY
En los servicios web en los que haya que implementar seguridad a nivel de mensaje, utilizaremos WS Security.
En este apartado se muestra cómo configurar un servicio web para incluir seguridad de WS-Security que consiste
en que la seguridad va dentro del mensaje SOAP.
Dentro de este modelo de seguridad existen las siguientes posibilidades:
- Firmado digital del mensaje SOAP – Garantiza la procedencia del mensaje, integridad de los datos y
no repudio.
- Cifrado del mensaje SOAP – Garantiza la confidencialidad del mensaje.
Antes de implementar la seguridad en un servicio web lo primero es crear el servicio web y probar su correcto
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
31/101
Framework Atlas
Manual usuario de Servicios Web
31 de 101
funcionamiento sin incluir seguridad tal y como se indica en los apartados anteriores.
Para cada servicio web al que se quiera incluir seguridad, ha de asociale una política de seguridad. Dentro del
arquetipo en el módulo lib podemos encontrarnos dos politicas (lib /src/main/resources/META-INF):
politicaWSSFirmado.xmlpoliticaWSSFirmadoCifrado.xml
En estos ficheros se definen las restricciones de seguridad a aplicar siguiendo los estándares de WS Secur i ty-
Pol icy .
Alguna de las características de estas politicas son las siguientes:
En el intercambio de información se utilizarán claves asimétricas, pares clave pública (certificado) +
clave privada.
El certificado a usar deberá ser del tipo X509v3 y además deberá contar con una referencia de tipo
thumbprint (tags RequireThumbpr intReference y WssX509V3Token10 ).
La cabecera de seguridad del mensaje deberá contener una fecha de creación de este (tag
Inc ludeTimestamp ).
Se firmará digitalmente el cuerpo del mensaje (tag SignedParts/Body ).
Se cifrará el contenido del cuerpo del mensaje (tag EncryptedParts/Body ).
El mensaje firmado contendrá una copia del certificado público del firmante (tag X509Token
IncludeToken=”…/Always” ).
Para las operaciones de firma, cifrado y validación de firma y cifrado se utilizará la plataforma ASF.
Suponiendo que ya tenemos un Servicio creado y funcionando pasamos a incorporale WSSecurity
4.3.1. Paso 1: Alta de la aplicación en la plataforma ASF
Antes de configurar la aplicación, debemos darla de alta en el entorno ASF y configurarla. Para el entorno de
desarrollo, esto se debe realizar mediante una consulta a la Unidad de Arquitectura de Aplicaciones en la categoría
de ASF a través de la web de soporte. Para el resto de entornos (validación, producción, etc.) se incluye dicha
información en la ficha de entrega.
La información que se ha de incluir en la solicitud es la siguiente:
- operación : WSS - seguridad servicio web
- aplicación : Nombre de aplicación que se desea dar de alta en ASF
- certificado de servidor a utilizar : Indicar qué certificado de servidor se desea utilizar, o si se quiere
utilizar uno genérico.
A continuación se muestra un ejemplo de solicitud:
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
32/101
Framework Atlas
Manual usuario de Servicios Web
32 de 101
Ejemplo de solicitud a la Unidad de Arquitectura de Aplicaciones
Operacion: WSS - seguridad servicio web Aplicacion: EJPL_WS_SERVIDORCertificado de servidor: certificado genérico
Como respuesta a la solicitud, la Unidad de Arquitectura de Aplicaciones contestará con un mensaje como este:
Ejemplo de respuesta de la Unidad de Arquitectura de Aplicaciones
Se han realizado actuaciones en la plataforma ASF 5.0 para definir servidor y cliente del alta solicitada para el
módulo "EJPL_WS_SERVIDOR".
Los datos para configurar los desarrollos son los siguientes:
- SERVIDOR
> ID de aplicación ASF: EJPL_WS_SERVIDOR
> alias "localkey": servidor_ws
- CLIENTE
> ID de aplicación ASF: EJPL_WS_CLIENTE
> alias "localkey": cliente_ws
> alias "remotekey": servidor_ws_cert
En la respuesta se mostrarán los datos de configuración necesarios para el servicio web (apartado SERVIDOR) y
para las pruebas unitarias del cliente en el módulo lib (apartado CLIENTE).
4.3.2. Paso 2: Configuración del Servicio
Una vez que se ha dado de alta en ASF y con los de SERVIDOR tenemos que incluir en el fichero
src/main/resources/environment.proper t ies lo siguiente:
src/main/resources/environment.properties
# Ids de aplicacion app.id.asf=EJPL_WS_SERVIDOR# Parametros de WS
miPrimerService.localKey=servidor_ws
El valor de la variable app.id.asf es el identificador de la aplicación en la plataforma ASF (debe ser igual que la
aplicación dada de alta en ASF). Este dato se corresponde con el ID de aplicación en el apartado SERVIDOR de la
respuesta de la Unidad de Arquitectura de Aplicaciones.
Es necesario crear una variable con la siguiente nomenclatura .localKey con el valor del alias
“localkey” proporcionado (alias del certificado con el que se va a firmar la respuesta). Ejpl:
miPrimerService. localkey.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
33/101
Framework Atlas
Manual usuario de Servicios Web
33 de 101
ATENCION
Recordar que cada vez que se modifica el valor de una variable en el fichero
src/main/resources/environment.properties es necesario también modificar todos los ficheroswar/(nombreEntorno)/environment.properties.
4.3.3. Paso 3: Actualización de configuración en el fichero services.xml
Para asociar una política de seguridad para un servicio web determinado, hay que incluir una serie de líneas dentro
del tag asociado al servicio en el fichero services.xml . En un fichero services.xml podrá haber servicios
seguros y servicios no seguros conviviendo sin problemas.
Como hemos dicho hay dos políticas por lo tanto dos configuraciones distintas a incluir dependiendo de cual se
elija:
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
34/101
Framework Atlas
Manual usuario de Servicios Web
34 de 101
Servicio con politicaWSSFirmado
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
miPrimerService
prueba123.services.MiPrimerService
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
35/101
Framework Atlas
Manual usuario de Servicios Web
35 de 101
${app.id.asf}server ${miPrimerService.localKey}
300000
Servicio con politicaWSSFirmadoCifrado
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
36/101
Framework Atlas
Manual usuario de Servicios Web
36 de 101
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier miPrimerService
prueba123.services.MiPrimerService
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
37/101
Framework Atlas
Manual usuario de Servicios Web
37 de 101
${app.id.asf}server ${miPrimerService.localKey}
300000
La variable incluida en amarillo es la única que hay que configurar. El resto es igual para todos los servicios que
necesiten esta politica de firma y cifrado. Se ha de poner el nombre de la variable incluida en el fichero
enviroment.properties.
Aunque en el listado anterior se han incluido las variables de configuración básicas, si se necesita una
configuración avanzada puede utilizarse cualquiera de las variables definidas en la siguiente tabla:
Propiedad Descripción Valor
invokingApp Nombre de la aplicación en ASF 5. Parámetroobligatorio.
Ej: EJPL_WS_SERVIDOR
operationMode Modo de operación del módulo de seguridad. Solo seadmiten dos valores: client o server . Parámetroobligatorio.
Ej: server
localKey Nombre del certificado propio a usar en lacomunicación segura. Parámetro obligatorio.Este certificado se utilizará para las operaciones defirmado del mensaje de petición y desencriptado delmensaje de respuesta.
Ej: servidor_ws
wsuTsLife Tiempo de validez del mensaje en milisegundos. Ej: 300000 (5 minutos)
signatureOperation Nombre de la operación en ASF para el firmado digitaldel mensaje. Parámetro no obligatorio. Serácomunicado en la respuesta a la solicitud en ASF si esnecesario configurarlo
Por defecto:
FIRMA_SIMPLE
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
38/101
Framework Atlas
Manual usuario de Servicios Web
38 de 101
encryptionOperation Nombre de la operación en ASF para el cifrado delmensaje. Parámetro no obligatorio. Será comunicadoen la respuesta a la solicitud en ASF si es necesarioconfigurarlo
Por defecto: CIFRADO
decryptionOperation Nombre de la operación en ASF para el descifrado delmensaje. Parámetro no obligatorio. Será comunicadoen la respuesta a la solicitud en ASF si es necesarioconfigurarlo
Por defecto:
DESCIFRADO
validationOperation Nombre de la operación en ASF para la validación dela firma de un mensaje. Parámetro no obligatorio. Serácomunicado en la respuesta a la solicitud en ASF si esnecesario configurarlo
Por defecto:
VERIFICACION
applySecurityOnFault Por defecto se aplica la seguridad configurada a todoslos mensajes del servicio. En algunos casos (redSARA) es necesario no aplicar seguridad a losmensajes que generan un . Si se desea
este comportamiento se debe configurar un valor „false‟en este parámetro
Por defecto: true
4.3.4. Paso 4: Modificación de la interfaz para clientes en nuestro servidor
Una vez creado el servicio web ahora vamos a crear el cliente que se distribuirá con una librería para que las
aplicaciones que tengan que integrarse con nuestra aplicación lo hagan utilizando esta librería.
Los clientes de servicio web ATLAS se caracterizan por que no se generan a partir de un descriptor WSDL del
servicio sino que se parte de la clase de la interfaz del servicio y de las clases que representen a los parámetros
del mismo. La invocación a los métodos del servicio web va a ser dinámica. Para facilitar esta invocación dinámica
dentro del framework Atlas existen varias clases base para la creación de clientes de servicio web, en el caso
actual hablamos de clientes seguros con validación de certificado.
AtlasSecuredWSClient: esta clase es la utilizada para servidores con seguridad a nivel de mensaje a
través de WS-Security
Por lo tanto, nuestra interfaz en vez de extender de AtlasUnsecuredWSClient, extenderá de AtlasSecuredWSClient,
por ejemplo así:
ClienteMiPrimerService.java
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
39/101
Framework Atlas
Manual usuario de Servicios Web
39 de 101
package prueba123.client;
import java.util.Properties;import prueba123.services.MiPrimerService;import atlas.clientews.client.AtlasSecuredWSClient;import atlas.core.exceptions.ServiceException;
public class ClienteMiPrimerServiceWSS1 extends AtlasSecuredWSClient implements MiPrimerService{
public ClienteMiPrimerServiceWSS1(String endpoint) {super(endpoint, "http://services.prueba123");
}
/** Propiedades */ private Properties properties;
@Override public String getFechaString() throws ServiceException {
return invoke("getFechaString", properties, String.class);}
/** * Establece el valor de las propiedades * @param properties las propiedades */
public void setProperties(Properties properties) {this.properties = properties;
}
}
4.4. CREACIÓN DE UN SERVIDOR CON WS-SECURITY + CERTIFICADO DE CLIENTE
En caso de tener que realizar un servidor con seguridad a nivel de mensaje + seguridad a nivel de transporteconcertificado de cliente.La configuración de este tipo de servicio web es la misma que la del punto anterior (Servidor con WS-Security) soloque añadiremos también el módulo de seguridad.
ATENCION
Este apartado describe la configuración para un servidor con seguridad a nivel de mensaje y a
nivel de transporte con certificado de cliente.
En caso de la seguridad a nivel de transporte es a través de certificado de cliente, el servidor
verificará los clientes conectados.
Si no se va a comprobar los clientes conectados (si no se requiere esta validación) basta con
seguir los pasos del punto anterior:
CREACIÓN DE UN SERVIDOR CON SEGURIDAD EN MENSAJE – WS-SECURITY
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
40/101
Framework Atlas
Manual usuario de Servicios Web
40 de 101
4.4.1. Paso 1: Actualización de configuración en el fichero services.xml
Una vez seguidos los pasos del punto anterior, añadir al fichero services.xml las siguientes líneas, de tal manera
que el fichero services.xml quedaría así:
services.xml
[...]
[...]
${app.id.asf}
https
[...]
[...]
[...]
4.4.2. Paso 2: Modificación de la interfaz para clientes en nuestro servidor
Una vez creado el servicio web ahora vamos a crear el cliente que se distribuirá con una librería para que las
aplicaciones que tengan que integrarse con nuestra aplicación lo hagan utilizando esta librería.
Los clientes de servicio web ATLAS se caracterizan por que no se generan a partir de un descriptor WSDL del
servicio sino que se parte de la clase de la interfaz del servicio y de las clases que representen a los parámetros
del mismo. La invocación a los métodos del servicio web va a ser dinámica. Para facilitar esta invocación dinámica
dentro del framework Atlas existen varias clases base para la creación de clientes de servicio web, en el caso
actual hablamos de clientes seguros con validación de certificado.
AtlasSecuredWSClient: esta clase es la utilizada para servidores con seguridad a nivel de mensaje a
través de WS-Security + Seguridad de transporte con certificado de cliente
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
41/101
Framework Atlas
Manual usuario de Servicios Web
41 de 101
Por lo tanto, nuestra interfaz en vez de extender de AtlasUnsecuredWSClient, extenderá de AtlasSecuredWSClient,
por ejemplo así:
ClienteMiPrimerService.java
package prueba123.client;
import java.util.Properties;import prueba123.services.MiPrimerService;import atlas.clientews.client.AtlasSecuredWSClient;import atlas.core.exceptions.ServiceException;
public class ClienteMiPrimerServiceWSS1 extends AtlasSecuredWSClient implements MiPrimerService{
public ClienteMiPrimerServiceWSS1(String endpoint) {super(endpoint, "http://services.prueba123");
}
/** Propiedades */ private Properties properties;
@Override public String getFechaString() throws ServiceException {
return invoke("getFechaString", properties, String.class);}
/**
* Establece el valor de las propiedades * @param properties las propiedades */
public void setProperties(Properties properties) {this.properties = properties;
}}
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
42/101
Framework Atlas
Manual usuario de Servicios Web
42 de 101
5. DESARROLLO DE UN SERVICIO WEB (CLIENTE)
En este documento se diferencian dos formas de acceder a un servicio web. Si queremos acceder a un servicio
web creado con ATLAS, es mucho más fácil ya que al crear el servicio web se generó una librería preparada para
usarla desde la parte cliente. Si no se trata de un servicio web creado con ATLAS, entonces se tendrá que partirdel fichero WSDL que describe el servicio web, y generar las clases a partir de éste.
5.1. ATLAS - CREACION DE UN CLIENTE (HTTP y HTTPS SIN CERTIFICADO CLIENTE)
Para usar un servicio web creado con ATLAS debemos disponer de la librería que se generó junto con el
servicio web. A continuación se describen los pasos para incorporar dicha librería en nuestro proyecto y definir las
propiedades de conexión al servicio web.
5.1.1. Paso 1: Inclusión de la dependencia
Para usar la librería generada en nuestro proyecto, será necesario realizar la inclusión de esta dependencia en el
fichero pom.xml , según se muestra a continuación:
ejemplo de inclusión de dependencia en pom.xml de proyecto
[...]
xxxx xxxx_ws_lib y.y.y
[...]
Los valores de las distintas variables nos los deben proporcionar los responsables de dicha librería.
5.1.2. Paso 2: Configuración del contexto de Spring
Para usar la librería correctamente debemos modificar el fichero de configuración de Spring de nuestro proyectodenominado applicationContext-services.xml , incluyendo la línea que importa el fichero de contexto de la librería
(modificar xxxx_ws_lib por el nombre del fichero de contexto que aparece dentro de la librería):
applicationContext-services.xml de proyecto
[...]
[...]
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
43/101
Framework Atlas
Manual usuario de Servicios Web
43 de 101
5.1.3. Paso 3: Configuración del endpoint en environment.properties
El último paso para configurar la URL de conexión al servicio web es definir una nueva variable en el fichero
src/main/resources/environment.properties de nuestra aplicación, según se muestra a continuación:
src/main/resources/environment.properties de proyecto
[...]
# Definición del endpoint del servicio MiServicioWeb miPrimerService.endpoint=http://desarrollo.madrid.org/ejemplo_ws/services/MiServicioWeb
[...]
Sustituir ejemplo_ws por el módulo técnino del web servce y MiServicioWeb por el nombre del servicio web al que
se llama.
ATENCION
Recordar que cada vez que se modifica el valor de una variable en el fichero
src/main/resources/environment.properties es necesario también modificar todos los ficheros
war//environment.properties para incluir la nueva variable.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
44/101
Framework Atlas
Manual usuario de Servicios Web
44 de 101
5.2. ATLAS - CREACION DE UN CLIENTE CON VALIDACIÓN DE CERTIFICADO DE CLIENTE
Para realizar llamadas a un servicio web de atlas que dispone de seguridad a nivel de transporte con certificado de
cliente, es necesario realizar los siguientes pasos:
5.2.1. Paso 1: Añadir variables de environment
Para configurar nuestro cliente correctamente, tenemos que modificar el fichero
src/main/resources/environment.propert ies , incluyendo las líneas marcadas en amarillo en el siguiente ejemplo:
src/main/resources/environment.properties de proyecto
[...]
# Ids de aplicacion app.id.asf=EJPL_WS_CLIENTE
# Definición del endpoint del servicio MiServicioWeb miServicioWeb.endpoint=http://desarrollo.madrid.org/ejemplo_ws/services/MiServicioWeb
https.keystore.path= https.keystore.pass=CA655C9BB562C317811001D666CFD99B https.secure.port=443
[...]
Los valores de las variables son los siguientes:
Parámetro Descripcion Valor por defecto
app.id.asf Nombre de la aplicación en ASF Ej.: EJPL_WS_CLIENTE
[nombreServicio].endpoint URL del servicio Ej.:
https://desarrollo.madrid.org//services/
https.keystore.path Ruta al almacén de certificados con
el certificado de cliente de conexión
Ej.: ssl/keystore.keystore
https.keystore.pass Contraseña de acceso al almacén
del certificado de cliente (configurar
cifrada)
Ej.: desarrollo
https.secure.port Puerto seguro de conexión Ej.: 443
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
45/101
Framework Atlas
Manual usuario de Servicios Web
45 de 101
5.2.2. Paso 2: Configuración de Spring
Además es necesario modificar en el fichero de contexto de Spring del modulo lib (applicationcontext-
xxxx_ws_lib.xml) el bean del cliente para añadirles las propiedades relacionadas con la seguridad tal y como se
puede ver en este ejemplo:
applicationContext-xxxx_ws_lib.xml
…
${https.keystore.path} ${https.keystore.pass}
${https.secure.port}
El bloque marcado en amarillo tendrá que añadirse tal cual pero modificando los nombre de las variables:
El bloque marcado en amarillo tendrá que añadirse sin mod if icaciones a la definición del cliente. Y por último,
deberán añadirse al fichero environment.proper t ies p ara los test uni tar ios las propiedades definidas en el
fichero de Spring para el servicio:
src/test/resources/environment.properties
# Ids de aplicacion app.id.asf=EJPL_WS_CLIENTE
# Definición del endpoint del servicio EjemploServicioHttps miServicioWeb.endpoint=https://desarrollo.madrid.org/ejemplo_ws/services/MiServicioWeb
https.keystore.path= https.keystore.pass=CA655C9BB562C317811001D666CFD99B https.secure.port=443
ATENCION
Los valores de los parametros de contraseñas (https.keystore.pass) han de ser cifrados antes
de configurarlos en el fichero environment.properties.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
46/101
Framework Atlas
Manual usuario de Servicios Web
46 de 101
Las variables a configurar son:
Parámetro Descripcion Valor por defecto
app.id.asf Nombre de la aplicación en ASF Ej.: EJPL_WS_CLIENTE
[nombreServicio].endpoint URL del servicio Ej.:
https://desarrollo.madrid.org//services/
https.keystore.path Ruta al almacén de certificados con
el certificado de cliente de conexión
Ej.: ssl/keystore.keystore
https.keystore.pass Contraseña de acceso al almacén
del certificado de cliente (configurar
cifrada)
Ej.: desarrollo
https.secure.port Puerto seguro de conexión Ej.: 443
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
47/101
Framework Atlas
Manual usuario de Servicios Web
47 de 101
5.3. ATLAS - CREACION DE UN CLIENTE CON SEGURIDAD EN MENSAJE WS-SECURITY
Para realizar llamadas a un servicio web de atlas que dispone de seguridad a nivel de mensaje, tenemos que
realizar las siguientes modificaciones en nuestro cliente.
5.3.1. Paso 1: Añadir variables de environment
Para configurar nuestro cliente para conectar con WS-Security tenemos que añadr el módulo de seguridad,
modificando el fichero src/main/resources/environment.propert ies , incluyendo las líneas marcadas en amarillo
en el siguiente ejemplo:
src/main/resources/environment.properties de proyecto
[...]
# Ids de aplicacion app.id.asf=EJPL_WS_CLIENTE
# Definición del endpoint del servicio MiServicioWeb miServicioWeb.endpoint=http://desarrollo.madrid.org/ejemplo_ws/services/MiServicioWeb miServicioWeb.localKey=cliente_ws miServicioWeb.remoteKey=servidor_ws_cert
[...]
Los valores de las variables son los siguientes:
Parámetro Descripcion Valor por defecto
app.id.asf Nombre de la aplicación
en ASF
Ej.: EJPL_WS_CLIENTE
[nombreServicio].endpoint URL del servicio Ej.:
http://desarrollo.madrid.org/ejempl
o_ws/services/MiServicioWeb
[nombreServicio].localKey Alias de la clave del cliente
usada para firmar el
mensaje. Se corresponde
con el alias del certificado
dado de alta en asf para la
operación de firma.
Ej.: cliente_ws
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
48/101
Framework Atlas
Manual usuario de Servicios Web
48 de 101
[nombreServicio].remoteKey Alias del certificado del
servidor utilizado para
cifrar el mensaje. Se
corresponde con el alias
del certificado dado de alta
en asf para la operación
de firma.
Ej.: servidor_ws_cert
5.3.2. Paso 2: Configuración de Spring
Además es necesario modificar en el fichero de contexto de Spring del modulo lib (applicationcontext-
xxxx_ws_lib.xml) el bean del cliente para añadirles las propiedades relacionadas con la seguridad tal y como se
puede ver en este ejemplo:
applicationContext-xxxx_ws_lib.xml
…
META-INF/politicaWSSFirmado.xml
${app.id.asf} client ${miPrimerService.localKey} ${miPrimerService.remoteKey} 300000
El bloque marcado en amarillo tendrá que añadirse tal cual pero modificando los nombre de las variables:
En el campo policyPath se ha de indicar el fichero de politica de firma:politicaWSSFirmado.xml
politicaWSSFirmadoCifrado.xml
Sustituir las siguientes variables por las correspondientes de nuestro servicio.
- miServicioWeb.localKey
- miServicioWeb.remoteKey.
El siguiente paso es definir las propiedades de ASF indicadas para el CLIENTE en el fichero de configuración del
módulo lib para poder hacer las pruebas con los Test Unitarios.
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
49/101
Framework Atlas
Manual usuario de Servicios Web
49 de 101
Fichero lib/src/test/resources/environment.properties
[...]
# Ids de aplicacion app.id.asf= ejpl_ws_cliente
# Datos de WS miPrimerService.endpoint=http://localhost:9080/services/MiServicioWeb miPrimerService.localKey=cliente_ws miPrimerService.remoteKey=servidor_ws_cert
[...]
En amarillo se han marcado las nuevas variables que se han de incluir.
A continuación se describen cada una de las variables:
Parámetro Descripcion Valor por defecto
app.id.asf Nombre de la aplicación en ASF Ej.: EJPL_WS_CLIENTE
[nombreServicio].endpoint URL del servicio Ej.:
http://localhost:9080/services/
[nombreServicio].localKey Alias de la clave del cliente usada para
firmar el mensaje. Se corresponde con el
alias del certificado dado de alta en asf para
la operación de firma.
Ej.: cliente_ws
[nombreServicio].remoteKey Alias del certificado del servidor utilizado
para cifrar el mensaje. Se corresponde con
el alias del certificado dado de alta en asf
para la operación de firma.
Ej.: servidor_ws_cert
-
8/17/2019 ATLAS_MUS_Servicios_Web.pdf
50/101
Framework Atlas
Manual usuario de Servicios Web
50 de 101
5.4. ATLAS - CREACION DE UN CLIENTE CON WS-SECURITY + CERTIFICADO DE CLIENTE
Para realizar llamadas a un servicio web de atlas que dispone de seguridad a nivel de mensaje más seguridad a
nivel de transporte con certificado de
top related