FW2/FW Justicia - Comunidad de Madrid

Anuncio
FW2/FW Justicia
MANUAL DE INTEGRACIÓN
Servicios de Firma AFC
Versión 1.5
Unidad de Arquitectura Software y
Soporte de Aplicaciones
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
Hoja de Control
Título
Servicios de Firma AFC Cliente
Documento de Referencia
NORMATIVA ATLAS
Responsable
Unidad de Arquitectura de Software y Soporte de Aplicaciones
Versión
1.5
Fecha Versión
24/05/2016
Registro de Cambios
Versión
Causa del Cambio
1.0
Versión inicial del documento
Responsable del Cambio
Fecha del Cambio
Unidad de Arquitectura de
Software y Soporte de
06/02/2014
Aplicaciones
1.1
Unidad de Arquitectura de
Añadida información sobre Implementación de
Servicio de AFC de operaciones de servidor
Software y Soporte de
05/11/2014
Aplicaciones
1.2
Unidad de Arquitectura de
Añadida información sobre Implementación de
applet de firma (para firmas con Hash)
Software y Soporte de
24/02/2015
Aplicaciones
1.3
1.4
1.5
Se incluye la integración con el servicio AFC Unidad de Arquitectura Software
Certificado
de Aplicaciones
Se incluyen las instrucciones para las
solicitudes de instalación en pre-producción y Unidad de Arquitectura Software
producción de las aplicaciones que se integran
de Aplicaciones
con AFC.
Se incluye las instrucciones para actualizar las Unidad de Arquitectura Software
aplicaciones de justicia para dejar de utilizar
de Aplicaciones
ASF y empezar a utilizar AFC.
2 de 18
21/09/2015
23/05/2016
24/05/2016
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
Índice
1.
INTRODUCCIÓN ................................................................................................................................................................ 4
2.
EJEMPLO ............................................................................................................................................................................. 5
3.
INSTALACION Y CONFIGURACION............................................................................................................................. 5
3.1. CONFIGURACION ....................................................................................................................................................... 5
3.1.1.
FW2......................................................................................................................................................................... 5
3.1.2.
Framework Justicia ................................................................................................................................................ 6
3.2. INSTALACION.............................................................................................................................................................. 7
3.2.1.
FW2......................................................................................................................................................................... 7
3.2.2.
Framework Justicia ................................................................................................................................................ 7
3.2.3.
Común ..................................................................................................................................................................... 8
4.
USO ........................................................................................................................................................................................ 8
4.1.
4.2.
4.3.
4.1.
4.2.
4.3.
5.
EXTENSIÓN DE CLASE SERVICEUTIL SI ES NECESARIO ................................................................................... 8
INSTANCIACION DEL SERVICIO DE AFC CLIENTE ............................................................................................ 11
FIRMA INDIVIDUAL DE DOCUMENTOS PDF ....................................................................................................... 11
FIRMA MASIVA DOCUMENTOS PDF ..................................................................................................................... 11
INSTANCIACION DEL SERVICIO DE AFC SERVIDOR ........................................................................................ 17
INSTANCIACION DEL SERVICIO DE AFC CERTIFICADO .................................................................................. 17
ENLACES RELACIONADOS .......................................................................................................................................... 18
3 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
1. INTRODUCCIÓN
AFC es la solución de firma centralizada para las aplicaciones de la Comunidad de Madrid.
Objetivos buscados:
Operativa 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
XADES
CADES
Integración:
La integración con la solucion de AFC se realiza a través de la librería del Framework Atlas atlasfrm-eadm-lib
(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
AfcOpeCertificadoService: Servicio de operaciones con certificados
Este documento describe como integrar la librería de Atlas atlasfrm-cryto-lib en una aplicación desarrollada con
otro framework Java que no sea Atlas, por ejemplo Framework 2 o framework de Justicia.
4 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
2. EJEMPLO
Se ha desarrollado un ejemplo de uso del servicio de AFC en la aplicación ejpl_cryto_web disponible en la url:
https://desarrollo.madrid.org/ejpl_cryto_web.
3. INSTALACION Y CONFIGURACION
3.1.
CONFIGURACION
3.1.1.
FW2.
La configuración es realizará igual que en el Framework Atlas con la diferencia de que las variables se han de
incluir en el fichero correspondiente del framework que se esté utilizando.
A continuación se muestra un ejemplo de configuración de AFC para Framework 2.
Ejemplo de configuracion
# Configuracion de acceso a AFC_Cliente
afc.cliente.endpoint=http://deswebservices.madrid.org/afc_ws/services/ServicioAFCCliente
# Configuracion de acceso a AFC_Servidor
afc.servidor.endpoint=http://deswebservices.madrid.org/afc_ws/services/ServicioAFCServidor
# Configuracion de acceso a AFC_Certificado
afc.certificado.endpoint=http://deswebservices.madrid.org/afc_ws/services/ServicioAFCCertificado
afc.modulo=ejpl_app
afc.password=07d818957a3fa16671165a836732cd6bc23c0008f520e3c9642fd06cce762eac
# Opcionalmente se puede incluir información del tipo de documento a firmar si la
aplicación solamente trabaja con un tipo de documento
afc.documentoTipo=SolicitudAyuda
afc.numeroFirma=1
La siguiente configuración es necesaria para el funcionamiento del applet de firma, necesario para realizar firmas
de Hash de documentos.
Ejemplo de configuración Applet
# Configuracion applet de firma
afc.clientJSUrl=https://desarrollo4.madrid.org/afirma/firma
A continuación se muestra un ejemplo de configuración de COVE para framework 2.
Ejemplo de configuracion
# Configuracion de acceso a COVE
cove.endpoint=http://deswebservices.madrid.org/cove_ws/services/CoveWS
cove.usuario=UUIA01
cove.tipo=EJARCH
cove.aplicacion=EJPL
5 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
Las variables necesarias para configurar el sistema de trazas son las siguientes:
Ejemplo de configuracion
# Configuracion de trazas de servicios de ATLAS
trazas.nivel.atlas=INFO
trazas.ficheroLog=/usr/aplic_ICM/logs/ejpl_crypto_web/ejpl_crypto_web
Para la configuración del fichero de log se utilizar la propiedad ‘trazas.ficheroLog’ de FW2. Se creará un nuevo
fichero y se añadirá el sufijo ‘_atlas.log’ para distingir el log de FW2 del log de los servicios de ATLAS. Con la
propiedad ‘trazas.nivel.atlas’ se especificará el nivel de log deseado. Los niveles disponibles son los de Log4j:
DEBUG, INFO, WARN y ERROR.
3.1.2.
Framework Justicia
La configuración es realizará igual que en el Framework Atlas con la diferencia de que las variables se han de
incluir en el fichero correspondiente del framework.
A continuación se muestra un ejemplo de configuración de AFC para Framework de Justicia.
Ejemplo de configuracion
<afc>
<certificado>
<endpoint>
http://deswebservices.madrid.org/afc_ws/services/ServicioAFCCertificado
</endpoint>
</certificado>
<cliente>
<endpoint>
http://deswebservices.madrid.org/afc_ws/services/ServicioAFCCliente
</endpoint>
</cliente>
<servidor>
<endpoint>
http://deswebservices.madrid.org/afc_ws/services/ServicioAFCServidor
</endpoint>
</servidor>
<modulo>XXXX</modulo>
<password>password</password>
<tipoDocumento>PROCESAL</tipoDocumento>
<numeroFirma>PROCESAL</numeroFirma>
</afc>
La siguiente configuración es necesaria para el funcionamiento del applet de firma, necesario para realizar firmas
de Hash de documentos.
6 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
Ejemplo de configuración Applet
# Configuracion applet de firma
<applet_certificados>
<url>https://desarrollo4.madrid.org/afirma/firma</url>
<version>LITE</version>
<filtrarCas>true</filtrarCas>
</applet_certificados>
A continuación se muestra un ejemplo de configuración de COVE para framework 2.
Ejemplo de configuracion
# Configuracion de acceso a COVE
<cove>
<endpoint>
http://deswebservices.madrid.org/cove_ws/services/CoveWS
</endpoint>
<aplicacion>XXXX</aplicacion>
<tipo>CEPJUS</tipo>
<usuario>USUARIO</usuario>
</cove>
Las variables necesarias para configurar el sistema de trazas son las siguientes:
Ejemplo de configuracion
# Configuracion de trazas de servicios de ATLAS
<trazas>
<nivel>
<atlas>INFO</atlas>
</nivel>
<ficheroLog>/usr/aplic_ICM/logs/xxxx/atlas_xxxx</ficheroLog>
</trazas>
Para la configuración del fichero de log se utilizar la propiedad ‘trazas.ficheroLog’ de FW2. Se creará un nuevo
fichero y se añadirá el sufijo ‘_atlas.log’ para distingir el log de FW2 del log de los servicios de ATLAS. Con la
propiedad ‘trazas.nivel.atlas’ se especificará el nivel de log deseado. Los niveles disponibles son los de Log4j:
DEBUG, INFO, WARN y ERROR.
3.2.
INSTALACION
3.2.1.
FW2.
Las librerías necesarias para poder utilizar el servicio de afc se encuentran publicadas en el portal de
arquitecturasw en el apartado de AFC como librería compartida: fw2-dependencias-ATLAS-1.2.9.war.
3.2.2.
Framework Justicia
Las aplicaciones de justicia deben incluir en su directorio WEB-INF/lib la librería usuj-3.0.0.jar, además deben
incluir la dependencia con última versión de la librería compartida fw2-dependencias-ATLAS-1.2.9.war (la versión
de esta librería compartida debe evolucionar al mismo tiempo que la versión de ATLAS).
7 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
3.2.3.
Común
Para la solicitud de instalación de la aplicación en los distintos entornos, se informará el valor de la propiedad
afc.password en claro, para que la unidad de paso a producción cifre la contraseña correspondiente según el
entorno.
¡IMPORTANTE para FW2 y FWJusticia!
No existe un entorno de PRE-PRODUCCIÓN de AFC, en ese entorno se apuntará al de VALIDACIÓN.
El fichero de configuración del entorno de pre-producción debe ser copia del fichero de configuración del
entorno de validación.
Por tanto, las solicitudes de intalación en PRODUCCIÓN (que llevan implícita la instalación en PREPRODUCCIÓN) deben llevar las configuraciones para PRE- PRODUCCION (con los valores en claro del
entorno de VALIDACIÓN) y PRODUCCIÓN (con los valores en claro de PRODUCCIÓN)
4. USO
Una vez configurada la aplicación se puede proceder a utilizar todas las funcionalidades que ofrece. La descripción
de cómo utilizar los servicios de AFC se puede ver en los manuales correspondientes del framework Atlas:
-
Operaciones en cliente consultar el manual ATLAS_MUS_Servicio_AFC_Ope_Cliente.
-
Operaciones en servidor consultar el manual ATLAS_MUS_Servicio_AFC_Ope_Servidor.
-
Operaciones en servidor consultar el manual ATLAS_MUS_Servicio_AFC_Ope_Certificado.
En este manual se describen y documentan aquellas peculiaridades propias de otros frameworks.
4.1.
EXTENSIÓN DE CLASE SERVICEUTIL SI ES NECESARIO
La librería atlasServices permite crear y usar los servicios actualmente integrados fuera de entornos Atlas. Para
cada servicio de Atlas se ha creado una Factoria que lo instancia. Por ejemplo CryptService se instancia a través
de la factoria CryptServiceFactory. Cada Factoria de servicios recibe un parámetro Properties con las propiedades
necesarias. Para facilitar la tarea de instanciación sin preocuparse de las propiedades necesarias (siempre que
estén correctamente configuradas en el fichero conf) se debe utilizar la clase util.services.Fw2ServiceUtil.
Para entornos distintos a FrameWork 2.0 es necesario extender la clase abstracta util.services.ServiceUtil:
Métodos a implementar en ServiceUtil
8 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
/**
* Metodo abstracto a implementar en la extension de la clase
* @param key
* @return
*/
public abstract String getProperty(String key);
/**
* Devuelve la ruta base de la aplicacion para poder concatenar las
* acciones resultado
* @return una url del tipo 'http://desarrollo3.madrid.org/ejpl_crypto_web'
*/
public abstract String getBasePath(HttpServletRequest request);
/**
* Permite configurar el sistema de trazas de los servicios de ATLAS.
*/
public abstract void configureLog();
Como ejemplo se muestra la implementación para FrameWork 2.0:
Métodos implementados en Fw2ServiceUtil
/**
* Devuelve la ruta base de la aplicacion para poder concatenar las
* acciones resultado
* @return una url del tipo 'http://desarrollo3.madrid.org/ejpl_crypto_web'
*/
@Override
public String getBasePath(HttpServletRequest request) {
return Config.getWebRoot(request) + request.getContextPath();
}
/**
* Implementación del método getProperty de la clase padre. Este método devuelve
* el valor de una propiedad pasada.
*/
@Override
public String getProperty(String key) {
return Config.get(key);
}
El sistema de trazas de los servicios de ATLAS se basa en log4j. Si el sistema ya se ha activado por la aplicación,
la implementación del método configureLog debe ser un método vacío. Si el sistema de trazas de la aplicación es
diferente, como en el caso de FW2, se debe iniciar el sistema de log4j para los servicios de Atlas. A continuación
se muestra la implementación para FrameWork 2.0:
Configuración de log en Fw2ServiceUtil
9 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
public static final String LOG_LAYOUT = "%d{dd/MM/yyyy HH:mm:ss,SSS}
%m%n";
public static final String LOG_MAX_FILE_SIZE = "1024KB";
public static final String LOG_SUFFIX = "_atlas.log";
%-5p [%t] (%F:%L) -
public static final String PROPERTY_LOG_FILE = "trazas.ficheroLog";
public static final String PROPERTY_LOG_LEVEL = "trazas.nivel.atlas";
…
@Override
public void configureLog() {
try {
configureLog(getProperty(PROPERTY_LOG_FILE) + LOG_SUFFIX,
getProperty(PROPERTY_LOG_LEVEL), LOG_LAYOUT, LOG_MAX_FILE_SIZE);
Logger.getLogger("atlas.services")
.info("Log de servicios de ATLAS configurado.");
} catch (IOException e) {
throw new ConfigurationException("Error configurando log de servicios
de ATLAS", e);
}
}
protected void configureLog(String path, String level, String pattern, String
maxFileSize) throws IOException {
// Configurar Appender de fichero
RollingFileAppender appender = new RollingFileAppender(
new PatternLayout(pattern), path, true);
appender.setThreshold(Level.toLevel(level));
appender.setMaxFileSize(maxFileSize);
appender.setMaxBackupIndex(10);
// Calcular nivel de trazas
Level logLevel = Level.toLevel(level, Level.ERROR);
// Configurar categoria raiz. El nivel de log se configurara en funcion del nivel de atlas
// Si nivel Atlas <= INFO, se configura info; en caso contrario se configura ERROR
Logger root = Logger.getRootLogger();
root.removeAllAppenders();
root.addAppender(appender);
root.setLevel(logLevel.isGreaterOrEqual(Level.INFO) ? Level.ERROR :
Level.INFO);
// Configurar categoria de atlas
Logger atlasLog = Logger.getLogger("atlas");
atlasLog.setLevel(logLevel);
}
10 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
4.2.
INSTANCIACION DEL SERVICIO DE AFC CLIENTE
A continuación se muestra un ejemplo de instanciación del servicio AfcOpClienteService:
Ejemplo de instaciación de AfcOpClienteService
import util.services.Fw2ServiceUtil;
import atlas.crypt.service.AfcOpClienteService;
...
AfcOpClienteService afcService =
Fw2ServiceUtil.getInstance().getAfcOpClienteService(this.request);
Ha de pasarse una referencia al objeto HttpServletRequest para instanciar el servicio. A partir de ahora una vez
que tenemos el objeto de la clase AfcOpClienteService este servicio se utiliza igual en todos los frameworks. Las
variables de configuración necesarias para la correcta instanciación del servicio son (con datos de prueba para
desarrollo):
Variables de configuración para el servicio AfcOpClienteService
afc.cliente.endpoint =
http://deswebservices.madrid.org/afc_ws/services/ServicioAFCCliente
afc.modulo = EJPL
afc.password = 07d818957a3fa16671165a836732cd6bc23c0008f520e3c9642fd06cce762eac
cove.endpoint = http://deswebservices.madrid.org/cove_ws/services/CoveWS
4.3.
FIRMA INDIVIDUAL DE DOCUMENTOS PDF
Una vez que ya se ha instanciado el Servicio de AFC Cliente ya lo podemos utilizar para realizar firma en cliente.
En la aplicación de ejemplo ejpl_crypto_web los recursos de demostración de firma de PDF en cliente son los
siguientesson los siguientes:
Acción FirmaPdf.java: esta acción se encargará de solicitar la operación de firma al Servicio de AFC y
redirigir al usuario a afc_firmacliente.
Acción FirmaPdfResultado.java: esta acción se encargará de gestionar el retorno desde afc_firmacliente y
obtener el fichero firmado.
Página firmaPdf.jsp: página que se encarga de mostrar el fichero firmado para descarga o los errores de
firma si ha habido problemas.
4.1.
FIRMA MASIVA DOCUMENTOS PDF
La firma masiva de documentos PDF en otros framework se realiza igual que en Framework Atlas salvo la
11 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
selección de certificado que se ha de hacer de la siguiente forma:
En la firma masiva la selección del certificado se ha de hacer en la aplicación cliente ya que para poder preparar
los pdfs para la firma y hacer los hash es necesario tener previamente el certificado digital con el que se va a
firmar.
En la aplicación de ejemplo ejpl_crypto_web los recursos de demostración para la selección del certificado son los
siguientes:
Acción SeleccionCertificado.java: esta acción se encargará de gestionar el certificado seleccionado por el
usuario. En el ejemplo, se enviará el certificado seleccionado por el usuario a una página que escribirá
algunos de los datos de este.
Página seleccionCertificado.jsp: esta página muestra el componente de selección de certificados.
Página principal_crypt.jsp y rejilla crypt.jsp: estas páginas se encargan de insertar los recursos
javascript y css necesarios.
ATENCIÓN
Para que el componente de selección de certificados funcione correctamente la aplicación web
debe cumplir el estándar servlet 2.4 o superior.
En el fichero web.xml:
<web-app version="2.4" xmlns="http://java...
El componente de selección de certificados trabaja conjuntamente con un componente de consola javascript que
permite controlar el proceso de desarrollo y que podrá ser desactivado para los entornos productivos.
El proceso para utilizar el componente de selección de certificados es el siguiente:
Colocar la librería atlasServices.jar en las librerías de proyecto (WEB-INF/lib).
Extraer el directorio META-INF/js de la librería al directorio js en la raíz web de la aplicación
(java/fuentes/web en FW2).
Extraer el directorio META-INF/style de la librería al directorio style en la raíz web de la aplicación
(java/fuentes/web en FW2).
Una vez colocados todos los recursos necesarios en la aplicación deberán definirse los siguientes elementos:
En la cabecera de las páginas jsp, habrá que definir las taglibs para poder ser usadas:
Declaración de las taglibs
12 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
<%@ taglib prefix="jsconsole" uri="jsconsole" %>
<%@ taglib prefix="afccrypt" uri="afccrypt" %>
Una vez definidas las taglibs de afccrypt y jsconsole, se declararán los comandos de cabecera (dentro del tag html
<head>).
Declaración de comandos de cabecera en tag html <head>
<jsconsole:header enabled="true" />
<config:param name="urlAppletFirma" value="afc.clientJSUrl"/>
<afccrypt:header url="${urlAppletFirma}" />
El atributo enabled de <jsconsole:header> controla si se muestra la consola de javascript o no. El tag
<config:param> solo puede ser usado en FW2. Su cometido es cargar la variable del fichero de configuración
indicada en el atributo value y con ella crea un atributo en el request con el valor de name para que pueda ser
usado en la página jsp, en el ejemplo en el atributo url del tag <afccrypt:header> que se encarga de cargar los
recursos necesarios para el componente de selección de certificados. En otros frameworks, el valor del atributo url
tendra que ser proporcionados con los medios disponibles.
El componente de selección de certificados se insertará con el comando certificados:
Declaración de comando de certificados
<!-- Combo de certificados -->
<afccrypt:certificados idCombo="comboCerts"
urlFiltro="/FiltroCertificados.icm"
filtrarCAs="true"
notify="certificadoSeleccionado" />
El atributo idCombo se utilizará para establecer el id del combo de certificados y también como prefijo de los
parametros que se enviarán al servidor una vez realizada la selección. Si no se establece este parámetro, el valor
por defecto será ‘selectCerts’.
El atributo filtrarCAs se ulitiza en unión con el atributo urlFiltro. Si filtrarCAs = true, se enviarán los certificados del
usuario a servidor y se filtrarán según la normativa de uso de certificados en las firmas digitales. Solo se mostrarán
los certificados que cumplan con los criterios de filtrado. El parámetro urlFiltro se configurará entonces con la Url a
la que se enviarán los certificados para ser procesados y filtrados. Si filtrarCAs = false no será necesario indicar el
parámetro urlFiltro.
El atributo notify hace referencia a una función javascript que será llamada cada vez que el usuario seleccione un
certificado en el combo.
13 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
A continuación se muestra un resumen de los parámetros disponibles en el comando de certificados:
Atributo
Descripcion
Obligatorio
Valor por Defecto
idCombo
Id del combo de certificados
No
selectCerts
filtrarCAs
Indica si filtrar los certificados del usuario
No
true
urlFiltro
Url del filtro de certificados
No
notify
Función javascript para cambios de
No
selección de certificados
version
Versión del applet a cargar:
No
LITE
No
cajaTexto
LITE, MEDIA, COMPLETA
styleClass
Estilo css a asignar al combo de certificados
Los parámetros que se enviarán al servidor en el formulario serán los siguientes, donde {idCombo} será el valor del
atributo idCombo del comando de certificados:
Parámetro
Descripción
{idCombo}_index
Índice del certificado seleccionado en el combo
{idCombo}_cn
Common Name del certificado seleccionado
{idCombo}_alias
Alias del certificado en el applet de firma.
{idCombo}_b64cert
Certificado seleccionado codificado en Base64
Para que los valores anteriores sean enviados al servidor, el componente <afccrypt:certificados> debe estar dentro
de un formulario, y al hacer el submit de este es cuando se enviarán a servidor.
El filtro de certificados en servidor es simplemente un recubrimiento de la clase FiltroCertificadosUtil en la librería
atlasServices.jar. El filtro se puede implementar como una acción de FW2, como un servlet, o como cualquier otro
tipo de acción en otros frameworks web. A continuación se muestran implementaciones de referencia como
ClaseAccion de FW2 y como Servlet:
Filtro de certificados como ClaseAccion en FW2
14 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
public class FiltroCertificados extends ClaseAccion {
@Override
public String procesar() throws AccionException {
try {
// Delegar filtrado a la clase de utilidad
FiltroCertificadosUtil.filtrarCertificados(request, response,
Fw2ServiceUtil.getInstance().getAfcProperties());
} catch (IOException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
return null;
}
}
Filtro de certificados como Servlet
public class FiltroCertificadosServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
FiltroCertificadosUtil.filtrarCertificados(request, response,
getAfcProperties());
} catch (IOException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
private Properties getAfcProperties() {
Properties props = new Properties();
props.setProperty(CoveServiceFactory.PROPERTY_COVE_ENDPOINT, "****");
return props;
}
}
Configuración en web.xml para Servlet de filtro de certificados
<servlet>
<display-name>Filtro de Certificados</display-name>
<servlet-name>filtroCertificados</servlet-name>
<servlet-class>ejpl_crypto_web.servlet.FiltroCertificadosServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>filtroCertificados</servlet-name>
<url-pattern>/filtroCertificados</url-pattern>
</servlet-mapping>
En la aplicación de ejemplo ejpl_crypto_web los recursos de demostración de firma masiva son los siguientes:
15 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
Acciónes FirmaPdfMasiva.java y FirmaPdfMasiva2.java: estas acciones son dos ejemplos de firma masiva
en pdf. En la primera se asume la misma configuración de firma para todos los ficheros y en el segundo
hay una configuración de firma diferente para cada fichero.
Acciónes FirmaPdfMasivaResultado.java y FirmaPdfMasiva2Resultado: acciones que gestionarán el
retorno desde AFC para FirmaPdfMasiva.java y FirmaPdfMasiva2.java respectivamente.
Clases DemoFileProvider.java y DemoFileProvider2.java: implementaciones de PdfFileProvider para los
dos ejemplos de firma masiva.
Páginas firmaPdfMasiva.jsp y firmaPdfMasiva2.jsp: páginas que gestionan la selección del certificado de
firma y la presentación de los documentos firmados para los dos ejemplos de firma masiva.
El primer paso para realizar una firma masiva es implementar la interfaz PdfFileProvider. Esta implementación se
encargará de interactuar con los servicios de firma para proporcionar la información necesaria y recoger los
ficheros firmados.
En los ejemplos de la aplicación ejpl_crypto_web, el tipo del identificador en que se basa la interfaz es una URL.
Este objeto es el más conveniente si los ficheros residen en disco. Para ficheros en base de datos se pueden
utilizar objetos Long o String que identifiquen la clave primaria de este. Otra opción es construir un bean de datos
con la información necesaria para identificar el fichero en el sistema donde este resida, y establecer su tipo como Id
de la interfaz. La única restricción es que este objeto ha de ser Serializable.
Una vez establecido el tipo del identificador del fichero, la implementación de PdfFileProvider planteará pocos
problemas.
Las dos implementaciones existentes (DemoFileProvider y DemoFileProvider2) se distinguen en que la primera
asume la misma configuración de firma para todos los ficheros (los mismos metadatos de firma, que solo se piden
una vez) y la segunda asume una configuración de firma diferente para cada fichero (los metadatos se pedirán por
cada configuración de tipoFirma/numeroFirma diferente).
El segundo paso consistirá en crear una ClaseAccion/Servlet/Accion (uno de ellos dependiendo del framework web
en uso) que ejecute las siguientes operaciones:
1. Seleccionar el certificado de firma con el taglib afccrypt.
2. Instanciar la implementación de PdfFileProvider (debe ser almacenada en sesión para el resultado).
3. Obtener los metadatos de la firma y realizar la solicitud de firma.
4. Redirigir al usuario a la aplicación AFC_Cliente
ATENCIÓN
16 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
Todos los ejemplos mostrados a continuación han sido planteados dentro de una aplicación en
los ámbitos de FrameWork 2.0. Sin embargo, el código de ejemplo es fácilmente extraible para
ser usado en otros frameworks java de desarrollo web.
4.2.
INSTANCIACION DEL SERVICIO DE AFC SERVIDOR
A continuación se muestra un ejemplo de instanciación del servicio AfcOpServidorService:
Ejemplo de instaciación de AfcOpServidorService
import util.services.Fw2ServiceUtil;
import atlas.eadm.services.AfcOpServidorService;
...
AfcOpServidorService afcService =
Fw2ServiceUtil.getInstance().getAfcOpServidorService();
A partir de ahora una vez que tenemos el objeto de la clase AfcOpServidorService este servicio se utiliza igual en
todos los frameworks. Las variables de configuración necesarias para la correcta instanciación del servicio son (con
datos de prueba para desarrollo):
Variables de configuración para el servicio AfcOpServidorService
afc.servidor.endpoint =
http://deswebservices.madrid.org/afc_ws/services/ServicioAFCServidor
afc.modulo = EJPL
afc.password = 07d818957a3fa16671165a836732cd6bc23c0008f520e3c9642fd06cce762eac
Este servicio nos permite utilizar los métodos de operaciones de firma en Servidor de AFC.
4.3.
INSTANCIACION DEL SERVICIO DE AFC CERTIFICADO
A continuación se muestra un ejemplo de instanciación del servicio AfcOpCertificadoService:
Ejemplo de instaciación de AfcOpCertificadoService
import util.services.Fw2ServiceUtil;
import atlas.eadm.services.AfcOpCertificadoService;
...
AfcOpCertificadoService afcCertificadoService =
Fw2ServiceUtil.getInstance().getAfcOpCertificadoService();
17 de 18
Framework 2/ Framework Justicia
Servicios de Firma AFC Cliente
A partir de ahora una vez que tenemos el objeto de la clase AfcOpCertificadoService este servicio se utiliza igual
en todos los frameworks. Las variables de configuración necesarias para la correcta instanciación del servicio son
(con datos de prueba para desarrollo):
Variables de configuración para el servicio AfcOpCertificadoService
afc.servidor.endpoint =
http://deswebservices.madrid.org/afc_ws/services/ServicioAFCCertificado
afc.modulo = EJPL
afc.password = 07d818957a3fa16671165a836732cd6bc23c0008f520e3c9642fd06cce762eac
trazas.nivel.atlas=INFO
Este servicio nos permite utilizar los métodos de operaciones de firma en Servidor de AFC.
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
18 de 18
Descargar