Seminario de Integración de Aplicaciones v5. Sevilla, 18 de Diciembre de 2.007

Documentos relacionados
ISJu: Técnicas de Programación Cartilla Teórica-Práctica Instalación del "Eclipse IDE for Java EE Developers" y el servidor "Apache Tomcat"

Web Tier en JAVA. Nicolás Troncoso Carrère. Valparaíso, ILI 258 Departamento de Informática Universidad Técnica Federico Santa María

Formularios HTML. Desarrollo de Aplicaciones Web Departamento Informática y Sistemas Universidad de Murcia Curso 2013/2014

Curso de Ajax con Java. Manual del alumno

Construcción de formularios en HTML. Formularios. Bases de Datos 2012/2013. Luis Valencia Cabrera

ANEXO APLICACIÓN DE FIRMA

NIVEL 16: ESTRUCTURAS N-ARIAS RECURSIVAS Aplicaciones Web, Html y Servlets. ISIS1206 Estructuras de Datos

J2EE Java 2 Enterprise Edition

Conexión de Mysql con NetBeans

Manejo de eventos en JavaScript WEB-TECHNOLOGIES

CAPÍTULO 14. DESARROLLO

Web Service: Consulta de Sistema de Turnos Manual de referencia

HTML: Formularios. Francisco J. Martín Mateos Carmen Graciani Díaz. Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla

ELABORACIÓN DE PÁGINAS WEB. CBTIS No. 02 ISC. RICARDO GARCÍA LÓPEZ

Clase. geniería de la Computación. Departamento de Ciencias e Ing. Diego C. Martínez - DCIC-UNS

Introducción a las aplicaciones WEB

APLICACIONES DE INTERNET: SOAP

4. DESARROLLO WEB CON JAVA JSP & SERVLETS

Arquitecturas Distribuidas. TEMA 3. Tecnologías de la web dinámica

MINISTERIO DE LA PRESIDENCIA. Firma Electrónica: Cliente Firma. ENISE. Octubre de Ministerio de la Presidencia. L. Cabezas

XML: HTML y XHTML. Sergio Luján Mora XML-03

Unidad Didáctica 2 GENERACIÓN DE DOCUMENTOS WEB CON GUIONES DE SERVIDOR

Java Servlets. Luis Fernando Llana Díaz. 17 de abril de Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Ejemplos de Servlet y JSP Web Application Development

IMPLEMENTACIÓN DE INTEGRACIÓN DE SISTEMAS HEREDADOS UTILIZANDO WEB SERVICES

Introducción al desarrollo web (idesweb) - 3 a ed.

Requisitos. Universidad ORT Arquitectura de Software

PRACTICA JSP SEMANA 2

ATLAS MANUAL DE INTEGRACIÓN

PHP y MySQL. Aplicaciones Web: PHP y base de datos MySQL (décima parte) Autor: Johnny Zulca Mamani

@Firma :: Componente Miniapplet de firma electrónica. Dirección General de Política Digital Consejería de Hacienda y Administración Pública

ANEXO 11: ESTÁNDARES RECONOCIDOS PARA LA ACREDITACIÓN

Sistema Online de Firma Electrónica

USO DE CRYSTALREPORTS 10 EN JAVA Versión 1.0

10 de abril de Iniciación a la Firma Electrónica y Tecnologías de PKI

PASO 1: Creamos un nuevo proyecto en NetBeans. Nos vamos a File y pulsamos sobre New Project

envía al browser. El browser despliega el archivo.

Escribir código HTML en los servlets es tedioso. que hay que utilizar las instrucciones print, println, etc. Es decir, HTML está dentro de java.

Manual del integrador del

Aplicación VALIDe: Validación on-line de certificados y documentos electrónicos para los ciudadanos.

REPÚBLICA DE PANAMÁ Ministerio de Comercio e Industrias Dirección Nacional de Comercio Electrónico DGCE-EPKI-SP

Quickstart-Webapps-Spring

LECCIÓN 5 Firma Electrónica

Firmador Digital Documentation

Taller de Desarrollo de Aplicaciones Web

DPWEB I, Carrito de Compras Guardar, Ing. Tomas Urbina. Carrito de compras con PHP y MYSQL

PHP orientado a objetos:

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Sustitución de Certificados en Soporte Papel

Librerías JavaScript Processing.js

escuela técnica superior de ingeniería informática

SERVLETS. Aplicaciones Distribuidas

Introducción al desarrollo web (idesweb)

Identidad Corporativa de ICM 1 TABLA DE CONTENIDO INTRODUCCIÓN COMPONENTES NECESARIOS... 3

Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Un mundo de servicios de firma electrónica: suite de aplicaciones y utilidades de firma

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat

Aplicaciones Web con Servlets y JSP (I)

Programación Hipermedia I

A continuación se confeccionara un formulario para el ingreso de un nombre y un botón para el envío del dato ingresado al servidor:

Manual de integración con el TPV Virtual para comercios con conexión por Redirección

Autenticación: Garantiza que el autor o visador del documento es quien dice ser.

WSDL (Web Service Defini/on Language)

PHP - MySQL - JavaScript (XAJAX) XAJAX. José Luis Comesaña

INTRODUCCIÓN N A LAS APLICACIONES WEB Y TECNOLOGÍA A JAVA

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO

2- Formularios y JavaScript Course: Developing web- based applica=ons

Introducción a JSF con NetBeans

Visión Práctica de la Firma Electrónica. Valencia, 20 de noviembre de 2009

En HTML, para indicar el orden de tabulación entre los controles de un formulario se emplea

ARQUITECTURA DE REDES Laboratorio

Construir RIA usando Flex. Eduardo Ostertag Jenkins, Ph.D. OBCOM INGENIERIA S.A.

Cada vez que la misma computadora solicita una página pg con un browser, junto con la solicitud el browser envía la cookie al servidor.

INGENIERÍA DEL SOFTWARE. 4º ING. INFORMÁTICA (UPV/EHU) 14 de SEPTIEMBRE de 2006

MARCO DE REFERENCIA PARA LA PLATAFORMA DE INTEROPERABILIDAD VOLÚMEN IV: MANUAL DEL DESARROLLADOR

Propuesta de acoplamiento de la firma electrónica avanzada en procesos de negocio

Experiencia de uso de la firma electrónica en la recogida de firmas de Iniciativas legislativas populares

HTML. Rogelio Ferreira Escutia

INSTITUTO POLITÉCNICO NACIONAL WEB APPLICATION DEVELOPMENT. CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO 3cm3 PROYECTO TERCER PARCIAL MI HOTMAIL CON JOOMLA

Universidad de Chile - Magister Artes Mediales ARTE / INTERNET. Clase 4: HTML

Aplicaciones Web. Más alla de CGI. David Cabrero Souto. Grupo MADS ( Universidade da Coruña

WEB SERVICE FACTORUMCFDISERVICE

Sistemas Operativos Distribuidos

CONTROLES FORMULARIOS PRIMERA PARTE

Firma electrónica in a nutshell

Desarrollo de sitios web con PHP y MySQL

Los formularios irán delimitados por las etiquetas <FORM> y </FORM>, la cual tiene dos parámetros:

DESARROLLO WEB EN ENTORNO SERVIDOR

HTTP, CGI, Applets y Servlets

SOLUCIONES EJERCICIOS DOM HTML

Servicios Web. Desarrollo de Aplicaciones Empresariales

EJEMPLOS. Ejemplo Nº 1. Página Sencilla

Ejemplos-Capítulo-6 Ejemplo-1: Distintos tipos de sombras en el navegador Safari de Apple

Manual del integrador del

10. Servlets con acceso a bases de datos

Framework 1. Web en Java. (solo aplicaciones en mantenimiento)

Tomar información por pantalla con JavaScript

Introducción al desarrollo web (idesweb) - 3 a ed.

Transcripción:

Seminario de Integración de Aplicaciones v5 Sevilla, 18 de Diciembre de 2.007

1. Introducción 2. Arquitectura de @Firma v5 3. Nuevas funcionalidades y capacidades de @Firma v5 4. Desarrollo de nuevas aplicaciones con @Firma v5 2

1. Introducción 2. Arquitectura de @Firma v5 3. Nuevas funcionalidades y capacidades de @Firma v5 4. Desarrollo de nuevas aplicaciones con @Firma v5 5. Ruegos y Preguntas 3

Introducción Qué es @Firma? Es una plataforma electrónica que utiliza certificados digitales X.509 v3 según las principales recomendaciones y estándares internacionales (RFC 2360, 3280, ETSI TS 101 733 v1.5.1, etc.) para la generación y validación de firmas digitales en múltiples formatos (CMS, XADES, XMLDSignature ), así como la validación avanzada de certificados digitales para garantizar en todo momento la integridad y validez de los mismos en el momento de la realización de una firma. Versiones de @Firma V3.x (Fielato, Consejería de Hacienda) V4.x (Junta de Andalucía, C. Justicia, C. Medio Ambiente, etc.) V5.x (Ministerio de Administraciones Públicas) 4

1. Introducción 2. Arquitectura de @Firma v5 3. Nuevas funcionalidades y capacidades de @Firma v5 4. Desarrollo de nuevas aplicaciones con @Firma v5 5. Ruegos y Preguntas 5

Arquitectura Física 6

Arquitectura lógica Núcleo 7

Arquitectura Lógica Fachada Módulo de Autenticación Web 8

Arquitectura lógica Configuración en Alta Disponibilidad 9

1. Introducción 2. Arquitectura de @Firma v5 3. Nuevas funcionalidades y capacidades de @Firma v5 4. Desarrollo de nuevas aplicaciones con @Firma v5 5. Ruegos y Preguntas 10

Servicios Web publicados por el núcleo de la plataforma (I) Módulo de Validación Validación de Certificados. Obtención de información de cerificados. Módulo de Firma Firma y multifirma de ficheros. Firma en bloque de ficheros y transacciones de firmas. Validación de firmas: Firmas. Multifirmas. Bloques de firmas. Consultas sobre bloques de firma. 11

Servicios Web publicados por el núcleo de la plataforma (II) Módulo de Custodia Sobre documentos: Almacenamiento. Borrado. Consulta mediante varios criterios. Sobre transacciones de firmas y bloques de firma: Consultas mediante varios criterios. Actualización de referencia externa. Módulo de Autenticación Web Generación de tickets. Actualización de tickets. Consulta de tickets. 12

Cliente de firma digital Soportado en varios sistemas operativos y navegadores Web. Generación de diversos formatos de firma: Binarios: PKCS7, CMS, XML: XMLDSig, XAdES, Modos de firma: Co y counter para formatos de firma binarios. Permite realizar firma de ficheros, datos, Web y firma masiva. Funcionalidad criptográfica: Generación de varios tipos de sobre digital (cifrado, firmado, cifrado y firmado). Cálculo de varios tipos de resumen (MD5, SHA1, ). Cifrado simétrico (TripleDES, AES, CAST5, TWOFISH, ). 13

1. Introducción 2. Arquitectura de @Firma v5 3. Nuevas funcionalidades y capacidades de @Firma v5 4. Desarrollo de nuevas aplicaciones con @Firma v5 5. Ruegos y Preguntas 14

Utilidades de desarrollo Apache AXIS para java y C/C++. Motor SOAP que incluye herramientas para la generación de clientes a partir de un fichero WSDL. Java Web Services Development Pack (JWSDP). WASP sobre ECLIPSE. Gsoap. Permite generar clases cliente C/C++ a partir de un fichero descriptor WSDL. Microsoft Visual Studio.NET. NuSOAP. Permite desarrollar Web Services bajo el lenguaje PHP. 15

Autenticación Web mediante tickets 16

Validación de certificados mediante OCSP (I) OCSP (Online Certificate Status Protocol) se encuentra definido mediante el estándar RFC 2560. Permite obtener el estado de revocación de un certificado de forma on line. Protocolos de comunicación usados: HTTP y HTTPS. Ventajas respecto a la validación mediante CRL s: Más fiable. Más eficiente. Inconvenientes respecto a la validación mediante CRL s: No todos los prestadores ofrecen este método de validación. 17

Validación de certificados mediante OCSP (II) Pasos para validar un certificado: 1. Formar la petición: OCSPRequest. 2. Firmar petición (opcional, soportado a partir de la versión 5.2). 3. Enviar mediante HTTP o HTTPS. 4. Esperar respuesta OCSPResponse. 5. Validar firma de la respuesta (opcional). 6. Obtener estado de revocación de la respuesta. Acciones previas: Aplicación cliente: Obtener clave pública del certificado de firma usado por el servidor OCSPResponder y establecer como certificado de confianza. Establecer certificado firmante de peticiones. Aplicación servidora: Incorporar clave pública del certificado de firma de peticiones usado por cliente al almacén de confianza empleado. 18

Firma de ficheros (I) Código cliente: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="content-type" content="text/html; charset=utf-8"> <TITLE>Ejemplo Firma de ficheros en dos fases</title> <script type="text/javascript" src="./common-js/instalador.js"></script> <script type="text/javascript" src="./common-js/applethelper.js"></script> <script type="text/javascript" src="./common-js/time.js"></script> <script type="text/javascript" src="./common-js/utils.js"></script> <script type="text/javascript" src="constantes.js"></script> 19

Firma de ficheros (II) Código cliente (continuación): <script type="text/javascript"> function submitform() { if(clientefirma){ clientefirma.setfileuri(document.getelementbyid('file').value); clientefirma.setsignatureformat(document.getelementbyid('signformat').value); clientefirma.setsignaturemode('explicit'); ok = clientefirma.sign(); if(ok){ document.getelementbyid('esignature').value = clientefirma.getsignaturebase64encoded(); document.getelementbyid('signercert').value = clientefirma.getsigncertificatebase64encoded(); document.formulario.submit(); } else { alert('se produjo un error en la firma...'); document.formulario.reset(); } } else { alert('error cargando el cliente de firma.'); } } </script></head> 20

Firma de ficheros (III) Código cliente (continuación): <BODY onload="cargarappletfirma();"> <h2 align="center"><strong>firma de usuario en dos fases</strong></h2> <form action="/firma/afirma5firmausuariodosfases" method="post" enctype="multipart/form-data" id="formulario" name="formulario"> <input type="hidden" name="afirmaservice" value="firmausuario2fasesf2"> <input type="hidden" id="esignature" name="esignature" value=""> <input type="hidden" id="signercert" name="signercert" value=""> <table width="90%"> <tr> <td width="20%" align="center"><b>fichero a firmar: </b></td> <td><input type="file" id="file" name="file" value=""></td> </tr> <tr> <td width="20%" align="center">formato: </td> <td><select id="signformat" name="signformat"> <option value="cms" selected="selected">cms</option> <option value="xades">xades</option> </select></td> </tr> 21

Firma de ficheros (IV) Código cliente (continuación): <tr> <td width="20%" align="center"><b>referencia externa:</b></td> <td><input type="text" name="refid" value=""></td> </tr> <tr> <td width="20%" align="center"><b>custodiar el documento firmado:</b></td> <td> <input type="radio" name="storedoc" value="true" checked> Si <input type="radio" name="storedoc" value="false"> No </td> </tr> <tr> <td width="50%" align="center"> <input type="button" name="boton1" value="firma en dos Fases onclick="submitform()"></td> <td><input type="reset" name="boton2" value="limpiar formulario"></td> </tr> </table> </form> </BODY> </HTML> 22

Firma de ficheros (V) Código servidor: public class TwoPhasesUserSignWSServlet extends HttpServlet { public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //Captura parámetros de la petición twophasesusersignresp = this.twophasesusersignws(requestparams); out.println(this.procesarrespuesta(twophasesusersignresp)); } private String twophasesusersignws(map requestparams) throws Exception { //Método que realiza la llamada web service al núcleo de la plataforma para finalizar //y custodiar la transacción de firma //Construir parámetro XML de entrada requerido por el servicio a partir de los //parámetros obtenidos de la petición xmlinput = this.buildtwophasesusersignrequest(requestparams); } // Invocar el servicio web return invokewebservice(xmlinput); 23

Firma de ficheros (VI) Código servidor (continuación): private String buildtwophasesusersignrequest(map requestparams) { //Método que construye el parámetro de entrada requerido por el servicio web // FirmaUsuario2FasesF2 a partir de los parámetros de la petición xmlinput = <?xml version=\"1.0\" encoding=\"utf-8\"?> <mensajeentrada + xmlns=\ https://afirmaws/ws/firma\... > + <peticion>firmausuario2fasesf2</peticion><versionmsg>1.0</versionmsg> + <parametros><idaplicacion> + requestparams.get( idaplicacion ) + </idaplicacion> + ; } return xmlinput; } private String procesarrespuesta(string twophasesusersignresponse) { //Método que construye código html que muestra el resultado de la operación //a partir de la respuesta obtenida del núcleo de la plataforma return htmlcode; } 24

Firma de página Web (I) Código cliente: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" href= css/estilo2.css" type="text/css"> <TITLE>Ejemplo Firma de ficheros en dos fases</title> <script type="text/javascript" src="./common-js/instalador.js"></ script > <script type="text/javascript" src="./common-js/applethelper.js"></ script > <script type="text/javascript" src="./common-js/time.js"></ script > <script type="text/javascript" src="./common-js/utils.js"></ script > <script type="text/javascript" src="constantes.js"></ script > <script type="text/javascript" src="../common-js/firma.js"></script> <script type="text/javascript" src="../common-js/htmlescape.js"></script> <script type="text/javascript" src="../common-js/utils.js"></script> <script type="text/javascript" src="../common-js/styles.js"></script> <script type="text/javascript" src="../common-js/firmaweb.js"></script> 25

Firma de página Web (II) Código cliente (continuación): <script type="text/javascript"> function submitform(element){ if(clientefirma){ clientefirma.setsignatureformat('cms'); clientefirma.setsignaturemode('implicit'); var signelement = firmaweb(element, document); if(!clientefirma.iserror()){ document.getelementbyid('esignature').value = clientefirma.getsignaturebase64encoded(); document.getelementbyid('signercert').value = clientefirma.getsigncertificatebase64encoded(); document.formulario.submit(); } else { alert('se produjo un error en la firma...'); document.formulario.reset(); } } else { alert('error cargando el cliente de firma.'); } } </script> 26

Firma de página Web (III) Código cliente (continuación): <body onload="cargarappletfirma();"> <form action="/firma/afirma5firmausuariodosfasesweb" method="post" enctype="multipart/form-data" id="formulario" name="formulario"> <input type="hidden" id="esignature" name="esignature" value=""> <input type="hidden" id="signercert" name="signercert" value=""> <div class="titulo"> <div class="poneresquina"> <div class="ponerimagen">escribenos</div> </div> </div> <div class="contenido"> Su dirección de correo electrónico: <br/> <input name="email" maxlength="90" size="50" value="" type="text"/><br/> Fichero adjunto 1:<br/> <input type="file"/><br/> Fichero adjunto 2:<br/> <input type="file"/><br/> 27

Firma de página Web (IV) Código cliente (continuación): Motivo de su consulta: <br/> <select name="motivo"> <option value="0">-- Elegir opción --</option> <option value="1">quiero patrocinar o poner publicidad en vuestro sitio web</option> <option value="2">quiero colaborar con vosotros</option> <option value="3">he detectado un problema en el sitio web</option> <option value="10">otros</option> </select><br/> Su mensaje: <br/> <textarea name="mensaje" id="mensaje" class="formens" cols="60" rows="5"></textarea> <input name="btnfirmar" id="botonfirmar" value="firmar formulario" class="boton" type="button" onclick="submitform(document.getelementbyid('formulario'))"/><br/> </div> <input name="op" value="add" type="hidden"/> <input name="idzona" value="" type="hidden"/> </form> <p> Gracias por colaborar!</p> </body> </html> 28

Ruegos y Preguntas 29