ATLAS_MUS_Arquetipo_Servicio_Web

Anuncio
Manual de Arquetipo
WebService
Proyecto: Desarrollo Framework ATLAS 2.0
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Hoja de Control
Título
Configuración del Componente de Auditoria
Documento
de
Referencia
Responsable
Entel
Versión
1.1
Fecha Versión
12/06/2009
Fecha
1
Revisado/Validado por:
Revisión/Validación
2
Aprobado por:
Fecha Aprobación
1
El Responsable de Mantenimiento realizará la revisión y validación del documento.
2
La aprobación del documento será realizada por el Director del Proyecto.
Registro de Cambios
Versión
Causa del Cambio
Responsable del Cambio
Fecha del Cambio
1.0
Versión inicial del documento
1.1
Revisión ICM
Manuel Pereira
12/06/2009
1.2
Revisión ICM
David Rico
23/03/2010
28/01/2009
Participantes / Elaboración:
Colaboradores
Manuel Pereira
Configuración del Componente de Auditoria
04/05/2010
Área/Departamento
Arquitectura
Nº Copias
de
Aplicaciones - ICM
Página 2 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Índice
1.
INTRODUCCIÓN ................................................................................................................................................................ 4
2.
AUDIENCIA OBJETIVO.................................................................................................................................................... 4
3.
CONOCIMIENTOS PREVIOS........................................................................................................................................... 4
4.
INFORMACIÓN SOBRE EL ARQUETIPO..................................................................................................................... 5
4.1. CREACIÓN DE UNA APLICACIÓN PARTIENDO DEL ARQUETIPO .......................................................................................... 5
4.2. ESTRUCTURA DEL ARQUETIPO ......................................................................................................................................... 5
4.3. ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS .................................................................................................................... 6
4.4. CONFIGURACIÓN DEL DESCRIPTOR DE SERVICIOS SERVICES.XML .................................................................................... 9
4.4.1.
Configuración básica.............................................................................................................................................. 9
4.4.2.
Configuración para seguridad.............................................................................................................................. 10
4.5. DESPLIEGUE Y EJECUCIÓN DE LA APLICACIÓN ............................................................................................................... 17
5.
VALIDACIÓN DE LA NORMATIVA Y GENERACIÓN DE LA DOCUMENTACIÓN.......................................... 20
6.
FUNCIONALIDADES NO INCLUIDAS EN EL ARQUETIPO ................................................................................... 21
7.
PREGUNTAS MAS FRECUENTES ................................................................................................................................ 22
8.
ENLACES RELACIONADOS .......................................................................................................................................... 23
Configuración del Componente de Auditoria
04/05/2010
Página 3 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
1. INTRODUCCIÓN
Los arquetipos son la plantilla para la generación de los distintos proyectos dentro del Framework Atlas 2.0. Estos
arquetipos utilizan el plugin archetype de maven para generar la estructura de ficheros y directorios necesarios
para nuestro proyecto gestionando las librerías que le indiquemos así como las dependencias entre ellas y las
dependencias transitivas que se generen con otras librerías. Todas las librerías serán incluidas durante el
empaquetado del proyecto, por lo que debe estar conectado al repositorio de artefactos de la Comunidad de
Madrid (Artifactory). El framework Atlas versión 2.0 consta de cinco tipos de arquetipos
-
Arquetipo para proyectos de tipo web
-
Arquetipo para proyectos de tipo jar.
-
Arquetipo para proyectos de tipo webservice o servicios web
-
Arquetipo para proyectos de tipo batch
-
Arquetipo para proyectos de gestión documental (documentum)
El Arquetipo para proyectos WebService genera un proyecto maven de tipo war listo para ser desplegado. Está
preparado para publicar un servicio de Spring a través de Axis2 sin generación de código intermedio. El proyecto
viene preconfigurado para acceder a base de datos a través de Hibernate y publicando un servicio de negocio
mediante WebService. Además dicho servicio cumple con las especificaciones de la WS-I, con respecto a la
interoperabilidad del servicio.
2. AUDIENCIA OBJETIVO
Este documento está dirigido a desarrolladores de proyectos java para ICM en los que se deseen crear una
aplicación que publique un Servicio Web utilizando el framework de desarrollo Atlas 2.0.
3. CONOCIMIENTOS PREVIOS
Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes
tecnologías:
-
Spring Framework.
-
Axis2
Además, es necesario haber leído y seguido los pasos del “Manual Configuración Entorno Desarrollo Maven”
disponible para proveedores.
Configuración del Componente de Auditoria
04/05/2010
Página 4 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
4. INFORMACIÓN SOBRE EL ARQUETIPO
4.1.
Creación de una aplicación partiendo del arquetipo
Crear un proyecto de Servicios Web a partir de un arquetipo es similar a la creación de un proyecto Web, lo único
que cambia es el nombre del arquetipo a utilizar. Para crear un proyecto a partir de un arquetipo maven puede
consultar la guía paso a paso que se indica en el documento “Manual Configuración Entorno Desarrollo
Maven”, según se indica en el apartado “Creación de una aplicación Web desde cero”, sustituyendo “atlasmodular-web” por “atlas-service”. Desde eclipse, seleccionamos el arquetipo correspondiente:
4.2.
Estructura del arquetipo
Este arquetipo genera un proyecto de tipo web service en el que se incluyen la configuración general de ejemplo
de uso de hibernate, daos, servicios y la configuración adicional para publicar dichos servicios como servicios web.
Esta aplicación además viene preconfigurada para utilizar los módulos de trazas y monitorización.
Configuración del Componente de Auditoria
04/05/2010
Página 5 de 23
4.3.
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Estructura de directorios y archivos
Una vez generado el proyecto nos generara una serie de directorios a estilo maven, donde ubicaremos los fuentes
y recursos de las partes de java, test y aplicación web.
Se generará la siguiente estructura de directorios y ficheros:
Fichero de configuración de maven del módulo core.
De esta ruta cuelga la estructura de paquetes con el código fuente de la
aplicación El paquete raíz va a llamarse igual que el nombre del módulo
que se está desarrollando.
Inicialmente el paquete raíz se llama xxxx, Dicho paquete se debe
eliminar o renombrar a la ruta normal de paquetes de nuestro proyecto.
Adicionalmente, para cada bloque funcional de nuestra aplicación debe
crearse un subpaquete. En el arquetipo se genera un único bloque
funcional cuyo paquete se denomina bloquefuncionaln. Este nombre
deberá ser modificado según la naturaleza del bloque funcional.
Interfaces de las clases
de acceso a datos y sus
implementaciones
Entidades anotadas de
hibernate
Interfaces de los servicios
de negocio y sus
implementaciones
Clases de propósito
general relacionadas con
los servicios
Interfaz de la fachada de
acceso a los servicios y
Configuración del Componente de Auditoria
04/05/2010
Página 6 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
su correspondiente
implementación.
Ruta donde se generarán los recursos del proyecto, normalmente son
ficheros de configuración y ficheros de propiedades. En nuestro caso
contiene los siguientes ficheros:
Fichero de configuración de log4j;
lleva además configuración de los
módulos
de
trazas
y
propiedades
que
monitorización.
Fichero
de
contiene mediante clave y valor
todos los valores susceptibles de
ser modificados o configurados
entre
diferentes
entornos
de
configuración
de
ejecución.
conf/applicationContext-*.xml
Ficheros
de
Spring que contienen un sufijo que
indica que parte de la aplicación
están configurando.
Carga en el contexto de Spring
todos los DAOs (clases de acceso
a datos).
Lleva
la
dataSource,
configuración
del
sessionManager
transactionManager
que
y
integra
hibernate con Spring. Inicialmente
el datasource será configurado
mediante
las
ubicadas
en
propiedades
el
fichero
conf/jdbc.properties (se generan
de forma automática con maven)
aunque para el paso a integración
deben configurarse localizando por
jndi al datasource del servidor de
Configuración del Componente de Auditoria
04/05/2010
Página 7 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
aplicaciones.
Carga en el contexto de Spring las
propiedades
ubicadas
en
application.properties y resto de
archivos
de
propiedades
necesarios.
Carga en el contexto de Spring
todos las clases de Servicios.
Contiene las propiedades para la
configuración inicial de la base de
datos.
Este
fichero
se
puede
utilizar durante el desarrollo, en el
entorno de integración/producción
la configuración que debe llevar es
la del servidor de aplicaciones.
Ruta donde se generarán el código fuente para los test de nuestro
proyecto. Este código nunca deberá estar incluido en el jar final.
Ruta donde se generarán los recursos para realizar las pruebas de test,
normalmente son ficheros de configuración y ficheros de propiedades. En
nuestro caso contiene los siguientes ficheros:
Lleva
la
dataSource,
configuración
sessionManager
del
y
transactionManager que integra
Hibernate con Spring. Este fichero
debe ser un espejo del fichero
conf/applicationContextdatabase.xml excepto que no
debe localizar el datasource por
JNDI del servidor de aplicaciones,
puesto que en la fase de test no
tenemos acceso a dicho servidor.
Hibernate está configurado en
este contexto de Spring para
Configuración del Componente de Auditoria
04/05/2010
Página 8 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
trabajar contra una base de datos
que
se
carga
en
memoria
(HSQLDB).
Ruta donde se generarán los recursos necesarios para la parte web de la
aplicación.
Página de entrada que muestra un listado de
servicios y un enlace a sus documentos
WSDL.
Lstado de módulos de
Axis2 (.mar) que se deben cargar durante el
despliegue de Axis2
Descriptor de despliegue de
servicios de Axis2.
Descriptor web de la aplicación
Descriptor adicional para el
servidor de aplicaciones Weblogic.
4.4.
Configuración del descriptor de servicios services.xml
Toda la configuración que se muestra a continuación se realiza según marca la documentación de Axis2, por lo que
para cualquier consulta adicional puede consultarlo en la web http://ws.apache.org/axis2/0_94/axis2config.html.
4.4.1.
Configuración básica
El arquetipo genera el fichero services.xml con una configuración válida que despliega un bean del contexto de
Spring como WebService. Si necesitamos editar dicho fichero lo podremos hacer de la siguiente manera:
•
service: etiqueta que especifica un servicio, podemos publicar tantos servicios como deseemos siempre
que tengan un nombre diferente (parámetro name). Inicialmente se pone como nombre de servicio el
nombre de la aplicación.
•
ServiceObjectSupplier: especifica que clase nos proporciona los objetos que vamos a publicar, en
nuestro caso Spring. Este parámetro no se debe modificar.
Configuración del Componente de Auditoria
04/05/2010
Página 9 de 23
•
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
SpringBeanName: Nombre del bean que vamos a publicar ubicado en el contexto de Spring
(applicationContext-services.xml.)
•
ServiceClass: Interfaz de la clase que se va a publicar. Se debe especificar la interfaz del servicio que
queremos publicar para que Axis2 sepa como generar el WSDL correspondiente, de lo contrario podemos
tener problemas por que las clases estén interceptadas por Spring-AOP y esto falsee su interfaz en
ejecución.
A continuación se muestra un ejemplo de configuración del fichero services.xml que publica un servicio.
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="Service12062009">
<parameter name="ServiceObjectSupplier"
locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSuppl
<parameter name="SpringBeanName" locked="false">facade</parameter>
<parameter name="ServiceClass"
locked="false">xxxx.bloquefuncionaln.services.facade.FacadeService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageR
</messageReceivers>
</service>
<!-- añadir aquí mas servicios si se desea <service name="nuevoServicio"> ... </service>
</serviceGroup>
4.4.2.
Configuración para seguridad
Para securizar nuestro servicio utilizaremos el módulo de Rampart que permite configurar desde el fichero
services.xml
la
seguridad
a
traves
WSS4J.
Podemos
ver
dicha
configuración
en
http://ws.apache.org/axis2/modules/rampart/1_0/security-module.html
Nota: Se recomienda no securizar el servicio hasta que no este comprobado el correcto funcionamiento del servicio
sin seguridad.
4.4.2.1.
Cryptography Extension(JCE)
Configuración del Componente de Auditoria
04/05/2010
Página 10 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Al utilizar la encriptación podemos encontrarnos con algún problema de Java Criptografía Extensión (JCE) que es
el framework para criptografía que forma parte de la distribución estándar de la VM y define APIS para algunos
algoritmos de encriptación. Para que funcione el encriptado y nos reconozca algunos algoritmos tales como el
algoritmo RSA (http://www.w3.org/2001/04/xmlenc # rsa-1_5, que es el utilizado por defecto) nos deberemos
descargar e instalar Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0 para
eliminar dichas restricciones. Las implementaciones de los algoritmos de cifrado, generación de claves, etc son
ofertadas por paquetes externos llamados providers. En caso de tener la versión ilimitada deberemos descargar e
instalar la librería BouncyCastle (Bouncy Castle es un proyecto de software libre que pretende desarrollar una serie
de librerías criptográficas libres y, entre otros, ofrece un provider para el JCE de java)en el PATH de nuestro
servidor de aplicaciones para que sea registrado por WSS4j como proveedor de seguridad ya que el proveedor por
defecto de Sun no es compatible con todos los algoritmos. En caso de utilizar Weblogic como servidor de
aplicaciones la incluiremos en el directorio $BEA_HOME/jrockit_150_12/jre/lib/ext también deberemos editar el
archivo java.security en la ruta $BEA_HOME/jrockit_150_12/jre/lib/security y añadirle la linea:
security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider
Con esto quedará registrado como proveedor de seguridad y tendremos la implementación del algoritmo de
cifrado con lo que podremos utilizar la encriptación del mensaje sin problemas.
4.4.2.2.
Parametros Rampart
Para securizar nuestro servicio necesitamos configurar al manejador (tanto de recepción como de
envío) una serie de parámetros que mostramos a continuación:
Configuración del Componente de Auditoria
04/05/2010
Página 11 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Parámetros posibles de la etiqueta OutflowSecurity que configura la seguridad de mensajes SOAP que enviamos:
Parámetro
items
user
passwordCallbackClass
signaturePropFile
signatureKeyIdentifier
encryptionKeyIdentifier
encryptionUser
encryptionSymAlgorith
m
encryptionKeyTransport
Algorithm
signatureParts
Descripción
Ejemplo
Añade Timestamp, firma el cuerpo del mensaje y luego
Posibles acciones de
lo
encripta
seguridad para el envío
<items> Timestamp Signature Encrypt</items>
Indica el alias de la clave para firma
Nombre de usuario
<user> bob</user>
Clase que provee la
contraseña para ser <passwordCallbackClass>
usada
como org.apache.axis2.security.PWCallback</passwordCallb
UsernameToken o para ackClass>
firmar el mensaje
Fichero de propiedades
donde se configure el
<signaturePropFile>
proveedor
de
firma.properties</signaturePropFile>
encriptación, keystore y
su contraseña.
Usa el número de serie del certificado
Identificador de la clave
<signatureKeyIdentifier>
que se usará para firmar
IssuerSerial</signatureKeyIdentifier>
Usa el número de serie del certificado
Identificador de la clave
<encryptionKeyIdentifier>IssuerSerial</encryptionKey
para encriptación
Identifier>
Nombre de usuario para
encriptación
<encryptionUser>alice</encryptionUser>
Usa
AES-128
Algoritmo
simetrico <encryptionSymAlgorithm>
para encriptación
http://www.w3.org/2001/04/xmlenc#aes128cbc</encryptionSymAlgorithm>
Usa
RSA-OAEP
Algoritmo
de <parameter
name="encryptionSymAlgorithm">
encriptación de la clave http://www.w3.org/2001/04/xmlenc#rsa-oaepmgf1p</parameter>
Firma los elementos
Producto y Tienda
"http://app.ns/ns"
Firmar diferentes partes
<signatureParts>
del mensaje SOAP
{Element}{http://app.ns/ns}Producto;{Element}{http:/
/app.ns/ns}Tienda </signatureParts>
Configuración del Componente de Auditoria
04/05/2010
Página 12 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Parámetros posibles para configurar la etiqueta InflowSecurity que configura como se realiza la validación de
mensajes de llegada.
Parámetro
Ejemplo
Primero desencripta el body del mensaje SOAP,
Posibles
acciones
de luego verifica la firma sobre este campo y finalmente
items
validación de llegada
verifica
la
viabilidad
del
Timestamp.
<items> Timestamp Signature Encrypt</items>
Clase que prove la
<passwordCallbackClass>
contraseña para ser usada
passwordCallbackClass
org.apache.axis2.security.PWCallback</passwordCa
como UsernameToken o
llbackClass>
para firmar el mensaje
Fichero de propiedades
donde se configure el
signaturePropFile
<signaturePropFile>
proveedor de encriptación,
sig.properties</signaturePropFile>
keystore y su contraseña.
Fichero
con
las
decryptionPropFile
propiedades utilizadas para <decryptionPropFile>
desencriptar
dec.properties</decryptionPropFile>
4.4.2.3.
Descripción
Valores posibles para el parámetro ítems
Ítem
NoSecurity
UsernameToken
Timestamp
Signature
Configuración del Componente de Auditoria
04/05/2010
Descripción
Parámetros a completar
No valida ni envía
ninguna cabecera de
seguridad. No se puede
combinar con ningún otro
ítem.
passwordCallbackClass – clase que manejadora
de contraseñas
Valida/Enviá el token de passwordType=PasswordText/PasswordDigest –
autenticación
contraseña en claro / encriptada (SHA)
user (solo envío) – Nombre de usuario que manda
el mensaje
precisionInMilliseconds – La marca de tiempo
debe tener precisión en milisegundos
Valida/Envía un token de
timestampStrict – Comprueba que la marca de
marca de tiempo
tiempo sea anterior a la fecha del receptor
passwordCallbackClass – clase que manejadora
de contraseñas
signaturePropFile – fichero de configuración de
Valida/Envía token de
proveedor criptográfico
firma respecto a algún
signatureKeyIdentifier - identificador del alias
campo del mensaje.
del certificado con el que firmar
signatureParts – partes del mensaje a firmar
signatureAlgorithm – algoritmo de firma
Página 13 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Encrypt
Encripta/desencripta
partes del mensaje
signatureDigestAlgorithm
user – si no se especifia signatureKeyIdentifier
dicho valor se recogerá de este parámetro
passwordCallbackClass – clase que manejadora
de contraseñas
decryptionPropFile (sólo recepción) – fichero de
configuración de proveedor criptográfico
encryptionPropFile (sólo envío) – fichero de
configuración de proveedor criptográfico
encryptionUser – Las funciones de encriptación
utilizan la clave pública del certificado de dicho
usuario para encriptar la clave simétrica generada.
encryptionKeyIdentifier – Define el tipo de clave
a utilizar, valores posibles: DirectReference,
IssuerSerial,
X509KeyIdentifier,
SKIKeyIdentifier,
EmbeddedKeyName,
Thumbprint.
encryptionSymAlgorithm – define el algoritmo de
encriptación simétrica
encryptionKeyTransportAlgorithm – define que
algoritmo encripta la clave simétrica generada
encryptionParts – partes del mensaje a encriptar
user – si no se especifia encryptionUser dicho
valor se recogerá de este parámetro
Evita
la
fase
de
serialización del mensaje
Uso
específico
para
intercomunicación
con
dicho mecanismo en .Net.
Este mecanismo de firma
UsernameTokenSignature utiliza los datos de
UsernameToken y una
constante predefinida para
construir la clave de la
firma
Valida/Envía token de
autenticación/autorización samlPropFile – fichero de configuración SAML
SAMLTokenUnsigned
SAML
SamlPropFile – fichero de configuración SAML
passwordCallbackClass – clase que manejadora
de contraseñas
Valida/Envía token de signaturePropFile – fichero de configuración de
autenticación/autorización proveedor criptográfico
SAMLTokenSigned
SAML firmados
signatureKeyIdentifier - identificador del alias
del certificado con el que firmar
user – si no se especifia signatureKeyIdentifier
dicho valor se recogerá de este parámetro
NoSerialization
Configuración del Componente de Auditoria
04/05/2010
Página 14 de 23
4.4.2.4.
El
proveedor
de
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Fichero de propiedades de criptografía
criptografía
se
configura
en
el
fichero
de
propiedades
bajo
el
parámetro
org.apache.ws.security.crypto.provider. La implementación de WSS4J provee por defecto un proveedor de
seguridad org.apache.ws.security.components.crypto.Merlin. Este proveedor necesita lo siguientes parámetros:
•
org.apache.ws.security.crypto.merlin.keystore.type – Tipo de almacén de claves (jks, pkcs12, …). Si
no se pone este parámetro toma por defecto jks.
•
org.apache.ws.security.crypto.merlin.keystore.password – Contraseña del almacén de claves.
•
org.apache.ws.security.crypto.merlin.keystore.alias - Alias del certificado (dentro del almancén). Sólo
es necesario para firmar, no para validar la firma.
•
org.apache.ws.security.crypto.merlin.alias.password - Contraseña del certificado. Si no se especifica
se recoge la contraseña del almacén de claves.
•
org.apache.ws.security.crypto.merlin.file – Ruta del almacén de claves.
Configuración del Componente de Auditoria
04/05/2010
Página 15 de 23
4.4.2.5.
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
Ejemplos de seguridad
Servicio que envía los mensajes sin ningún tipo de seguridad pero al recibirlos verifica
usuario,contraseña y el timestamp.
<service name="InteropTestB">
<parameter name="ServiceObjectSupplier"
locked="false">org.apache.axis2.extensions.spring.receivers.SpringServletContextObj
ectSupplier</parameter>
<parameter name="SpringBeanName" locked="false">InteropTestBService</parameter>
<parameter name="ServiceClass"
locked="xsd:false">atlas.service.interopB.InteropTestBService</parameter>
<description>Servicio para los test de interoperabilidad (TEST
B)</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
</messageReceivers>
<module ref="rampart" />
<parameter name="InflowSecurity">
<action>
<items>UsernameToken Timestamp</items>
<passwordCallbackClass>atlas.service.inerop.security.PWCallback</passwordCallbackCl
ass>
</action>
</parameter>
</service>
Para utilizar usuario y contraseña tanto en recepción como envío tendría la siguiente configuración:
<module ref="rampart" />
<parameter name="InflowSecurity">
<action>
<items>UsernameToken</items>
<passwordCallbackClass>atlas.ws.test.PWCallback</passwordCallbackClass>
</action>
</parameter>
<parameter name="OutflowSecurity">
<action>
<items>UsernameToken</items>
<passwordCallbackClass>atlas.ws.test.PWCallback</passwordCallbackClass>
<user>jonathan</user>
</action>
</parameter>
Servicio que realiza la firma para envío, además verifica en la recepción
Configuración del Componente de Auditoria
04/05/2010
Página 16 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
<module ref="rampart" />
<parameter name="InflowSecurity">
<action>
<items>Signature</items>
<passwordCallbackClass>account.services.security.PWCallbackSign</passwordCallbackCla
ss>
<signaturePropFile>conf/client.properties</signaturePropFile>
</action>
</parameter>
<parameter name="OutflowSecurity">
<action>
<items>Signature</items>
<passwordCallbackClass>atlas.service.inerop.security.PWCallbackSign</passwordCallbac
kClass>
<signaturePropFile>conf/service.properties</signaturePropFile>
<user>service</user>
<signatureParts>Body</signatureParts>
<mustUnderstand>false</mustUnderstand>
</action>
</parameter>
A continuación se muestra el contenido de los ficheros de propiedades de criptografía a los que se hace referencia
client.properties y service.properties:
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merl
in
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=almacen
org.apache.ws.security.crypto.merlin.keystore.alias=client
org.apache.ws.security.crypto.merlin.alias.password=password
org.apache.ws.security.crypto.merlin.file=${basedir}/src/main/resources/mykeystore.j
ks
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merl
in
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=almacen
org.apache.ws.security.crypto.merlin.keystore.alias=service
org.apache.ws.security.crypto.merlin.alias.password=password
org.apache.ws.security.crypto.merlin.file=${basedir}/src/main/resources/mykeystore.j
ks
4.5.
Despliegue y Ejecución de la aplicación
El archetipo service es una aplicación web preparada para la publicación de alguno de sus servicios mapeados en
spring como servicio web axis2.
Para construir el proyecto debe ejecutarse el siguiente comando desde el POM padre del proyecto generado:
Configuración del Componente de Auditoria
04/05/2010
Página 17 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
mvn clean install
Por defecto, al ejecutar Maven con los parámetros “clean install” se genera el war correspondiente a la aplicación.
Para desplegar el war en nuestro servidor de aplicaciones podemos coger el fichero de la carpeta en la que se ha
generado (web/target/nombreFichero.war), o podemos utilizar un servidor Jetty local que viene preconfigurado en
el arquetipo, ejecutando desde el directorio web la siguiente línea de comandos:
mvn clean jetty:run
Esto arranca un servidor jetty en el puerto 9080 de nuestra máquina, en el que se encuentra desplegado el war de
nuestra aplicación.
Si en lugar de un servidor jetty queremos construir y desplegar en un servidor WebLogic definido por el usuario, es
necesario primero configurar en el fichero pom.xml del módulo web del proyecto los parámetros del servidor
weblogic:
<profile>
<id>weblogic-local</id>
<activation>
<property>
<name>environment</name>
<value>local</value>
</property>
</activation>
<properties>
<!-- Weblogic Settings -->
<weblogic.adminServer.hostName>localhost</weblogic.adminServer.hostName>
<weblogic.hostName>localhost</weblogic.hostName>
<weblogic.adminServer.protocol>t3</weblogic.adminServer.protocol>
<weblogic.adminServer.port>7001</weblogic.adminServer.port>
<weblogic.port>7001</weblogic.port>
<weblogic.servlet.port>7001</weblogic.servlet.port>
<weblogic.user>weblogic</weblogic.user>
<weblogic.password>weblogic</weblogic.password>
<weblogic.serverName>AdminServer</weblogic.serverName>
<weblogic.targetNames>AdminServer</weblogic.targetNames>
<weblogic.remote>false</weblogic.remote>
Configuración del Componente de Auditoria
04/05/2010
Página 18 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
<weblogic.upload>false</weblogic.upload>
<seguridad.ruta.politicas>/conf</seguridad.ruta.politicas>
</properties>
Posteriormente puede ejecutarse la siguiente sentencia de maven, desde el directorio raiz de la aplicación:
mvn clean install weblogic:deploy –Denvironment=local
Para la ejecución de los tests JMeter, desde el módulo test:
mvn clean install –Denvironment=jmeter
Para la generación y despliegue de los artefactos adicionales con los javadocs y el código fuente del proyecto:
mvn clean install –Dadditional_artifacts=true
Para probar la ejecución de este arquetipo puede comprobar en la URL donde se listan los servicios desplegados y
sus documentos WSDL:
http://<host>:<puerto>/<contexto>/services/listServices
Configuración del Componente de Auditoria
04/05/2010
Página 19 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
5. VALIDACIÓN DE LA NORMATIVA Y GENERACIÓN DE LA DOCUMENTACIÓN
Los arquetipos vienen preparados para automáticamente generar un web-site con la información de la aplicación,
incluyendo lava javadoc, información de dependencias, etc. También se ejecuta una herramienta automática que
valida el cumplimiento de la normativa de Atlas 2.0, que genera un informe sobre los posibles incumplimientos de
dicha normativa. Para más información sobre dicha herramienta consultar el documento “Manual de Configuración
del Entorno de Desarrollo Maven”.
Configuración del Componente de Auditoria
04/05/2010
Página 20 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
6. FUNCIONALIDADES NO INCLUIDAS EN EL ARQUETIPO
Este arquetipo solo contiene los componentes imprescindibles para realizar un proyecto con web services. Si
desea configuraciones adicionales puede consultar la siguiente documentación:
•
Manual Usuario Auditoría – Si su aplicación almacena datos susceptibles de ser auditados por la
LOPD (Ley Oficial de Protección de Datos).
Configuración del Componente de Auditoria
04/05/2010
Página 21 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
7. PREGUNTAS MAS FRECUENTES
Pregunta: Saltan excepciones al generar el código cliente
Respuesta: A la hora de crear nuestro código cliente con axis1.4, cuando el wsdl contiene tipos de excepciones
tales como Exception, RuntimeException se generan errores en la creación. Para solucionarlo evite que los
métodos de la interfaz que se configura en el services.xml contengan ese tipo de excepciones.
Pregunta: No consigo firmar o encriptar
Respuesta: Si al encriptar o firmar obtenemos la siguientes excepción
exception unwrapping private key - java.security.InvalidKeyException: Illegal key size
esto es debido a que la instalación de la jdk necesita un parche sobre la ruta jre/lib/security denominado
Java(TM) Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0
Vease solución al bug en la siguiente dirección: http://mlblog.osdir.com/java.javamail.crypto-api.devel/200603/index.shtml
Si el error esta relacionado con Cripto Merlin (ClassNotFound) debe revisar el punto Cryptography
Extension(JCE)
Pregunta: No consigo que Axis despliegue mi servicio
Respuesta: Si aparece el error:
org.apache.axis2.deployment.DeploymentException: The following error occurred during schema generation:
Unable to load bytecode for class $Proxy1
o algún otro relacionado con clases interceptadas por Spring AOP o AspectJ significa que no hemos indicado el
parametro ServiceClass correctamente y esta intentando obtener la definición del objeto a partir de un objeto
instrumentado por AOP
Configuración del Componente de Auditoria
04/05/2010
Página 22 de 23
Manual de Arquetipo WebService
Fecha:
Proyecto: Desarrollo Framework Atlas 2.0
25-mar-10
8. ENLACES RELACIONADOS
Producto
URL
Axis2
http://ws.apache.org/axis2/
Configuración
http://ws.apache.org/axis2/0_94/axis2config.html
Versión
Services.xml
Configuración Rampart
http://ws.apache.org/axis2/modules/rampart/1_0/security-module.html
Ejemplos de seguridad con http://blog.sweetxml.org/2007/12/rampart-basic-examples-how-you-addws.html
Rampart
Apache Maven
http://maven.apache.org/
2.0.9
Ajax4JSF
http://www.jboss.org/jbossrichfaces/
3.1.4.GA
Barbecue
http://barbecue.sourceforge.net/
1.0.6d
Commons BeanUtils
commons.apache.org/beanutils/
1.7.0
Commons Configurations
http://commons.apache.org/configuration/
1.3
Facelets
https://facelets.dev.java.net/
1.1.11
Hibernate
http://www.hibernate.org/
3.2.6.ga
Hibernate Annotations
http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/
3.3.0.ga
JAXB
http://java.sun.com/webservices/jaxb/
2.1
Jcaptcha
jcaptcha.sourceforge.net/
1.0-RC5
JPA
http://java.sun.com/developer/technicalArticles/J2EE/jpa/
1.0
JSF
http://java.sun.com/javaee/javaserverfaces/
1.1
JSFUnit
http://www.jboss.org/jsfunit/
1.0.GA
Log4J
http://logging.apache.org/log4j/
1.2.14
MyFaces Core
http://myfaces.apache.org/
1.1.6
RichFaces
http://www.jboss.org/jbossrichfaces/
3.1.4.GA
Spring
http://www.springframework.org/
2.5.5
Spring Security
http://www.springframework.org/
2.0.4
Tomahawk
http://myfaces.apache.org/tomahawk/
1.1.8
Velocity
http://velocity.apache.org/
1.5
WS-I
http://www.ws-i.org/
Configuración del Componente de Auditoria
04/05/2010
Página 23 de 23
Descargar