ATLAS_MUS_Servicio_AFC_Ope_Servidor_v1_1

Anuncio
ATLAS
MANUAL DE INTEGRACIÓN
Servicios de Firma AFC Servidor
Versión 1.1
Arquitectura de Software
Framework Atlas
Servicios de Firma AFC Servidor
Hoja de Control
Título
Servicios de Firma AFC Servidor
Documento de Referencia
NORMATIVA ATLAS
Responsable
Arquitectura de Software
Versión
1.1
Fecha Versión
27/05/2014
Registro de Cambios
Versión
Causa del Cambio
1.0
Versión inicial del documento
Responsable del Cambio
Fecha del Cambio
Área de Soluciones, Aplicaciones
Especiales y Arquitectura de
06/02/2014
Software
Área de Soluciones, Aplicaciones
1.1
Se da soporte a la firma CADES
Especiales y Arquitectura de
Software
2 de 11
26/03/2014
Framework Atlas
Servicios de Firma AFC Servidor
Índice
1.
INTRODUCCIÓN ................................................................................................................................................................ 4
1.1.
AUDIENCIA OBJETIVO ...................................................................................................................................................... 4
2.
DESCRIPCIÓN .................................................................................................................................................................... 5
3.
INSTALACION Y CONFIGURACION............................................................................................................................. 5
3.1.
ALTA EN AFC ............................................................................................................................................................... 5
3.2.
CONFIGURACION ....................................................................................................................................................... 6
3.2.1.
Configuracion de acceso a AFC ............................................................................................................................. 6
3.3.
INSTALACION .............................................................................................................................................................. 6
3.3.1.
Paso 1: Añadir la dependencia al módulo de Administración Electrónica ............................................................ 6
3.3.1.
Paso 2: Actualizar la configuración de Spring ....................................................................................................... 7
3.3.2.
Paso 3: Inyectar el Servicio en las clases que lo requieran.................................................................................... 7
4.
USO ........................................................................................................................................................................................ 8
4.1.
4.2.
4.3.
4.4.
4.5.
5.
FIRMA DOCUMENTOS EN SERVIDOR ..................................................................................................................... 8
VERIFICACION DE FIRMA DOCUMENTOS EN SERVIDOR .................................................................................. 8
FIRMA ASINCRONA DE DOCUMENTOS EN SERVIDOR ....................................................................................... 9
RECOGIDA DE DOCUMENTOS FIRMADOS DE FORMA ASINCRONA EN SERVIDOR .................................. 10
EXCEPCIONES PRODUCIDAS POR LAS OPERACIONES DE SERVIDOR.......................................................... 10
ENLACES RELACIONADOS .......................................................................................................................................... 11
3 de 11
Framework Atlas
Servicios de Firma AFC Servidor
1. INTRODUCCIÓN
AFC es la solución de firma centralizada para las aplicaciones de la Comunidad de Madrid.
Objetivos buscados:
Operativo de firma similar y centralizada.
Formatos comunes de firma compatibles con ENI (Esquema Nacional de Interoperabilidad)
Simplificar la integración de requisitos de firma en los desarrollos.
Transparencia en las actualizaciones de la plataforma de firma
Inventario de aplicaciones y tipos de firmas
Histórico y estadísticas de operaciones realizadas
Operaciones que permite:
Firma digital en cliente
Firma digital en servidor
Validación de firmas
Tipos de firma (Admitidos por el ENI)
PADES – Pdf Adavanced Electronic Signatures
XADES - Xml Adavanced Electronic Signatures
CADES – CMS Advanced Electronic Signatures
Integración:
La integración con la solucion de AFC se realiza a través de la librería del Framework Atlas atlasfrm_eadm
(librería que conecta con los servicios de administración electrónica).
Esta librería puede ser utilizada tanto por aplicaciones desarrolladas con el framework Atlas así como las
desarrolladas con otros frameworks Java (framework 2 o framework Justicia).
Dentro de esta librería podemos encontrar dos servicios:
AfcOpeClienteService: Servicio de Operaciones en cliente
AfcOpeServidorService: Servicio de Operacion en servidor
Este documento describe el servicio de afc para operaciones en servidor. Si se necesitan operaciones en cliente
consultar el manual ATLAS_MUS_Servicio_AFC_Ope_Cliente. Si se va a utilizar desde una aplicación que no es
del framework ATLAS consultar el manual FW2_MUS_Integracion_AFC.
1.1.
Audiencia objetivo
Este documento está orientado a desarrolladores java que necesiten realizar operaciones de firma en Servidor.
4 de 11
Framework Atlas
Servicios de Firma AFC Servidor
2. DESCRIPCIÓN
Las operaciones que el servicio de AFC ofrece en servidor son::
firmarDatos – para firma síncrona de ficheros en servidor
verificarFirma – para verificar un fichero firmado en servidor
firmarDatosAsinc – para firma asíncrona de ficheros en servidor
consultaAsinc – para consultar datos firmados asíncronamente
3. INSTALACION Y CONFIGURACION
3.1.
ALTA EN AFC
Antes de utilizar el servicio de AFC en desarrollo es necesario autorizar a la aplicación. Las peticiones de
autorización de uso del servicio AFC se dirigirán a través del servicio Remedy al grupo GC.AE.
Para firma en servidor es necesario indicar en la petición los siguientes datos:
Aplicación: Código poaps del proyecto
Nombre del módulo técnico: Nombre del modulo tecnico que se va a integrar con AFC. Este valor será el que se
informará en el fichero de configuración de la aplicación en la propiedad afc.modulo.
Descripción uso: Breve descripción del uso que se requiere del servicio AFC
Entorno: Entorno donde se requiere la autorización
Login administrador: Usuario con el que acceder al entorno AFC para la administración de documentos
Para cada tipo de documento a firmar
-
Nombre del tipo de documento
-
Formato: XADES, PADES o CADES
-
Firma Sincrona o asincrona
-
Firma visible o no: Por defecto No
-
En caso de firma visible:
o
Fuente: Por defecto Arial 8
o
ubicación de la firma.(coordenadas)
-
Nombre de la operación de firma en ASF: Por defecto FIRMA_SIMPLE
-
Alias del sello de organo con el que se va a firmar: En desarrollo por defecto 5M.
Una vez que se autorice su uso se recibirá una password (diferente para cada entorno) que habrá que informar en
el fichero de configuración en la variable afc.password.
5 de 11
Framework Atlas
Servicios de Firma AFC Servidor
3.2.
CONFIGURACION
3.2.1.
Configuracion de acceso a AFC
La información de acceso, así como las configuraciónes de firma se definirán en el fichero de configuración
mediante las siguientes variables (el nombre de estas variables es igual para todos los frameworks):
Variable
afc.modulo
Descripción
Nombre del módulo para autenticarse contra el servicio de
Obligatorio
SI
ASF. Se corresponde con el nombre dado de alta en el
Servicio de ASF.
afc.password
Contraseña de acceso, debe estar cifrada. Esta contraseña
SI
se proporciona cuando se solicita el acceso al Servicio de
AFC.
A continuación se muestra un ejemplo de configuración.
Ejemplo de configuracion
# Configuracion de acceso a AFC
afc.modulo=ejpl_app
afc.password=07d818957a3fa16671165a836732cd6bc23c0008f520e3c9642fd06cce762eac
3.3.
INSTALACION
El Servicio AfcOpServidorService viene incluido en el módulo de Administración Electrónica de Atlas. Para poder
utilizarlo, bastará con incluir la dependencia de este módulo en el fichero pom.xml del proyecto.
3.3.1.
Paso 1: Añadir la dependencia al módulo de Administración Electrónica
Para añadir la dependencia al módulo de Administración Electrónica (eadm-lib) dentro de nuestro proyecto
maven hay que añadir una entrada “dependency” en la sección “dependencies” del fichero “pom.xml” del
proyecto, como se puede ver en el siguiente ejemplo:
6 de 11
Framework Atlas
Servicios de Firma AFC Servidor
pom.xml
<dependencies>
…
<dependency>
<groupId>atlasfrm</groupId>
<artifactId>atlasfrm-eadm-lib</artifactId>
<version>${atlasfrm-eadm-lib.version}</version>
</dependency>
</dependencies>
3.3.1.
Paso 2: Actualizar la configuración de Spring
Es necesario importar la configuración de Spring para los servicios de la librería eadm dentro del fichero
applicationContext-services.xml.
applicationContext-services.xml
<import resource="classpath:/conf/applicationContext-eadm-lib.xml" />
3.3.2.
Paso 3: Inyectar el Servicio en las clases que lo requieran
Para inyectar el Servicio previamente definido, se pasa como “property” al bean que lo vaya a usar, que debe
tener el método “set” correspondiente. Para más información sobre cómo inyectar referencias, se puede consultar
la documentación de Spring.
applicationContext-services.xml
<bean id="miService" class="xxxx.services.MiServiceImpl"
p:afcOpServidorService-ref=" afcOpServidorService"/>
xxxx.services.MiServiceImpl.java
public class MiServiceImpl implements MiService {
private AfcOpServidorService afcOpServidorService;
public void set AfcOpServidorService (AfcOpServidorService cryptService) {
this. afcOpServidorService = afcOpServidorService;
}
...
}
7 de 11
Framework Atlas
Servicios de Firma AFC Servidor
4. USO
Una vez configurado y inyectado el servicio se puede proceder a utilizar todas las funcionalidades que ofrece.
4.1.
FIRMA DOCUMENTOS EN SERVIDOR
La firma de documentos en servidor se realiza mediante el método firmarDatos()
AfcOpServidorService.java
/**
* Firma digitalmente los datos pasados como parámetro.
* @param data datos a firmar
* @param documentoTipo Código de documento tipo registrado en AFC
*
para la aplicación que le llame
* @return datos firmados
* @throws AfcOpServidorServiceException
*/
byte[] firmarDatos(byte[] data, String documentoTipo)
throws AfcOpServidorServiceException;
Ejemplo de firma de documentos en Servidor
public void firmarFichero(String nombreFichero) throws Exception {
File ficheroPrueba = new File(nombreFichero);
InputStream isFichero = new FileInputStream(ficheroPrueba);
byte[] data = IOUtils.toByteArray(isFichero);
byte[] resultado = this.afcOpServidorService.firmarDatos(data, "CT_PDF");
…
…
}
4.2.
VERIFICACION DE FIRMA DOCUMENTOS EN SERVIDOR
La verificación de firmas de documentos en servidor se realiza mediante el método verificarFirma()
Devuelve una lista de certificados con los que está firmado el documento.
AfcOpServidorService.java
/**
* Verifica que el documento proporcionado está firmado correctamente.
*
* @param data datos a verificar la firma
* @param documentoTipo Código de documento tipo registrado en AFC
*
para la aplicación que le llame
* @return Datos de los certificados de las firmas
* @throws AfcOpServidorServiceException
*/
AfcDatosCertificado[] verificarFirma(byte[] data, String documentoTipo)
throws AfcOpServidorServiceException;
8 de 11
Framework Atlas
Servicios de Firma AFC Servidor
AfcDatosCertificado.java
/**
* Clase AfcDatosCertificado para retorno del método
* {@link atlas.eadm.services.AfcOpServidorServiceImpl#verificarFirma()}
* Métodos de la clase:
*
getNif()
*
getNombre()
*
getCif()
*
getClavePublica()
*/
public class AfcDatosCertificado extends DatosCertificado;
Ejemplo de firma de documentos en Servidor
public void verificarFichero(String ficheroFirmado) throws Exception {
File ficheroPrueba = new File(ficheroFirmado);
InputStream isFichero = new FileInputStream(ficheroPrueba);
byte[] data = IOUtils.toByteArray(isFichero);
byte[] resultado = this.afcOpServidorService.verificar(data, "CT_PDF");
…
…
}
4.3.
FIRMA ASINCRONA DE DOCUMENTOS EN SERVIDOR
La firma asincrona de documentos en servidor se realiza con el método firmarDatosAsinc()
Este método devuelve un código de petición con el que más tarde se recogerá el documento firmado mediante el
método consultaAsinc()
AfcOpServidorService.java
/**
* Firma asíncronamente los datos pasados como parámetro.
* @param data datos a firmar
* @param documentoTipo Código de documento tipo registrado en AFC
*
para la aplicación que le llame
* @return código de petición
* @throws AfcOpServidorServiceException
*/
String firmarDatosAsinc(byte[] data, String documentoTipo)
throws AfcOpServidorServiceException;
9 de 11
Framework Atlas
Servicios de Firma AFC Servidor
Ejemplo de firma asíncrona de documentos en Servidor
public void firmarFichero(String nombreFichero) throws Exception {
File ficheroPrueba = new File(nombreFichero);
InputStream isFichero = new FileInputStream(ficheroPrueba);
byte[] data = IOUtils.toByteArray(isFichero);
String codigoResultado =
this.afcOpServidorService.firmarDatosAsinc(data, "CT_PDF");
…
…
}
4.4.
RECOGIDA DE DOCUMENTOS FIRMADOS DE FORMA ASINCRONA EN SERVIDOR
La recogida de documentos firmados de forma asincrona en servidor se realiza con el método consultaAsinc()
A este método se le pasa un número de petición obtenido por el método firmarDatosAsinc()
AfcOpServidorService.java
/**
* Regoge los datos de una firma asincrona<br/>
* Si la petición está pendiente o no se puede recoger por alguna causa
* se lanza una {@link AfcOpServidorServiceException}
*
* @param codigoPeticion código de petición asincrona devuelto por
*
firmarDatosAsinc
* @return datos firmados
* @throws AfcOpServidorServiceException
*/
byte[] consultaAsinc(String codigoPeticion) throws fcOpServidorServiceException;
Ejemplo de firma asíncrona de documentos en Servidor
public void recogerFichero(String codigoPeticion) throws Exception {
byte[] resultado =
this.afcOpServidorService.consultaAsinc(codigoPeticion);
…
…
}
…
4.5.
EXCEPCIONES PRODUCIDAS POR LAS OPERACIONES DE SERVIDOR
Todas las operaciones en servidor lanzan una AfcOpServidorServiceException que incluyen dos métodos
para saber el código de error y mensaje de error producido por AFC.
10 de 11
Framework Atlas
Servicios de Firma AFC Servidor
AfcOpServidorService.java
/**
* Excepcion lanzada por las Operaciones de servidor de AFC
* {@link atlas.eadm.services.AfcOpServidorService}
* Tiene dos métodos que devuelven información del error producido por AFC
*
getCodigoError()
*
getMensajeError()
*/
public class AfcOpServidorServiceException
extends ServiceException implements Serializable;
5. ENLACES RELACIONADOS
Producto
URL
Axis2
http://ws.apache.org/axis2/
Certificados ICM
http://desarrollo.madrid.org/certificados/
Descarga certificados de prueba
http://desarrollo.madrid.org/certificados/descarga_de_certificados.htm
11 de 11
Descargar