Archivos del sitio asp.net

Pruebas estrés sobre la plataforma Viafirma

Posteado por Felix G. Borrego en Enero 14th, 2009

 Para comprobar el rendimiento de nuestra plataforma de firma, hemos realizado una serie de pruebas de estrés sobre el API Web Service de Viafirma. El objetivo de estas pruebas ha sido obtener métricas de comportamiento y limites de carga para los diferentes servicios ofrecidos, para determinar el rango de operaciones en los que el servicio es estable.

Para las pruebas se han realizado firmas en servidor XADES de ficheros xml de 20k, utilizando como sistema de custodia ficheros y firmando con un certificado de Firma Profesional en software.

Se han realizado en dos tipos de entornos, el primero bastante precario en recursos y el segundo un entorno de producción real. En ambos casos pudimos comprobar que el comportamiento de Viafirma, ante un gran numero de peticiones fue más que aceptable.

Rendimiento de Viafirma con los requisitos Mínimos de Hardware

El entorno donde se realizaron las pruebas  es un portátil con un procesador Turion a 2 GHz y 2 gigas de RAM, con el servidor de aplicaciones  configurado para permitir 200 hilos concurrentes y con un máximo de 512 MB asignados.

Las pruebas se realizaron configurando un grupo de hilos simulando 100 peticiones por segundo en un bucle infinito.

A continuación se muestran los resultados obtenidos en la misma máquina y misma configuración en un entorno Windows y en un entorno Linux.

Pruebas sobre Windows XP SP 3 en JRE 6.0.11 de Sun

Prueba sobre Windows XP

Como se observa en la gráfica, Viafirma mantuvo la cantidad constantes de 1.200 peticiones por minuto con una media de cerca de 5 segundos desde la entrada de la petición hasta su resolución y respuesta.  Mientras se realizaros las pruebas, Jconsole marcó en todo momento un consumo de memoria estable.

Pruebas sobre Ubuntu 8.10 en JRE 6.0.10 de Sun

Prueba sobre Ubuntu

Repetimos las pruebas en un entorno Unix, y observando que el rendimiento es algo mayor. Respondiendo una media de 2.100 peticiones por minuto.

Rendimiento de Viafirma con la configuración de Hardware recomendada

Después de haber hecho estas pruebas “de andar por casa”, hemos repetido la misma batería de pruebas sobre un entorno de producción, un  Ubuntu Server con 8 nucleos, 6 Gb de memoria y una configuración optimizada de la JVM 6.

Rendimiento firma digital con viafirma

Como podemos observar,  el comportamiento es excelente, alcanzando casi más de 7.500 firmas por minuto, manteniéndose totalmente estable la JVM y con el procesador nunca superando el 50% ( debido a los tiempos de espera impuestos por la red).

Firmando digitalmente en Windows 7

Posteado por Felix G. Borrego en Enero 8th, 2009

Estos últimos días hemos estado realizando pruebas para comprobar el comportamiento de Viafirma en el nuevo sistema operativo de Microsoft, y los resultados no han podido ser mejores, el sistema se comporta perfectamente en Internet Explorer 8 sobre el nuevo Windows 7!!!.

Os dejo algunas capturas de pantalla:

  • En caso de que el usuario no tenga instalado Java en su sistema, la detección de componentes inicial corrige esta situación e instala automáticamente la JRE.

Detección de componentes para firma Digital con Viafirma en Windows 7

  • El componente de firma busca los certificados instalados en el sistema, detecta  los certificados presentes (en este caso un certificado de la FNMT) y nos permite realizar sin problemas la firma digital del documento.

Buscando certificados digitales instalados en el sistemaCertificado digital de la fnmt encontrado con Viafirma y firmando

C# / ASP.NET : Firma digital y autenticación con Viafirma (II)

Posteado por Felix G. Borrego en Noviembre 29th, 2008

En este artículo muestran los pásos a seguir para utilizar los servicios de firma digital ( XAdes, Facturae, …), autenticación (FNMT, Firma Profesional, ANCERT, …) y verificación de validez de certificados ( OCSP, CRLs, …) desde aplicaciones ASP.NET gracias a Viafirma.

1- Añadir las dependencias necesarias

Es necesario que incorporemos al proyecto las siguientes dlls incluidas en el kit de desarrollo de Viafirma:  DotNetOpenId.dll, log4net.dll y ViafirmaClientDotNet.dll.

Añadir referencias para firma digital Añadir referencias para firma digital ( openid , viafirmaClient, log4net)

Por otro lado también necesitaremos añadir el  directorio “viafirma” y que contiene los ficheros:

  • Default.aspx: con los métodos que deben ser sobreescritos con el comportamiento específico a ejecutar cuando finalice el proceso de firma.
  • viafirmaStyle.css: con la apariencia que viafirma adoptara para el proceso de autenticación o firma. Este css puede ser adaptado a la identidad corporativa de la aplicación cliente.
  • xrds.aspx: necesario para el correcto funcionamiento de la comunicación OpenID.

2- Creamos una página de ejemplo desde la que realizar la firma

Creamos una primera página aspx en la que simplemente colocaremos un botón de acción asociado a un controlador de página que utilizará el API de Viafirma para firmar digitalmente un fichero de ejemplo con el certificado digital al usuario.

El código de la aplicación de ejemplo queda como el siguiente:

<%@ Page Language=”C#” Inherits=”AplicacionEjemploClienteViafirma.Default” %>
<html>
<body>
<h2>Ejemplo de integración Viafirma con .Net</h2>
<form id=”form1″ runat=”server”>
<p>Pruebe la autenticación</p>
<asp:button id=”firmarButton” runat=”server” text=”Firmar un documento de ejemplo con Viafirma” onClick=”FirmarButton_Click” />
</form>
</body>
</html>

3- Implementar el método  FirmarButton_Click

En este método simplemente indicaremos al cliente de viafirma cuál es la url pública de acceso a Viafirma, cuál es la url de acceso al servicio web de Viafirma, y registraremos un fichero para su firma.

public void FirmarButton_Click(object sender, EventArgs e){

    // Configuramos el cliente de viafirma ( En una aplicación real esto se realiza al iniciar la aplicación)
    ViafirmaClientFactory.Init("http://viafirma.viavansi.com/viafirma", http://viafirma.viavansi.com/viafirma);
    // Recuperamos / Generamos el contenido del documento a firmar. ( Como ejemplo generamos un txt ) 
    byte[] datos_a_firmar = System.Text.ASCIIEncoding.ASCII.GetBytes("Contenido del documento firmado");
    // Enviamos a firmar el documento
     ViafirmaClient clienteViafirma = ViafirmaClientFactory.GetInstance();
    // Registramos el documento que deseamos firmar. Obteniendo un identificador temporal.
    string idTemporalFirma = clienteViafirma.PrepareFirmaWithTypeFileAndFormatSign("FicheroEjemplo.txt", typeFile.txt, typeFormatSign.XADES_EPES_ENVELOPED, datos_a_firmar);
    System.Console.Write("idTemporalFirma: " + idTemporalFirma);
    // Iniciamos el proceso de firma redireccionando al usuario a Viafirma interactuando con el usuario..
    clienteViafirma.Sign(idTemporalFirma);
}

    

Con este simple código ya conseguimos que nuestra aplicación ASP.NET utilice Viafirma para que sea ésta la responsable de solicitar, validar, recuperar el certificado o DNI electrónico del usuario y firmar el documento digitalmente.  En este ejemplo se ha realizado la firma de un fichero de texto utilizando en formato XADES, pero de una forma muy similar se podría haber optado por realizar la firma de un pdf o de una factura electrónica.

Una vez que el proceso termine, Viafirma devolverá el control a la aplicación ASP.NET retornando todos los datos obtenidos del certificado, junto con el identificador de firma asociado al documento firmado.

Obtener los datos de respuesta

Una vez que Viafirma obtenga los datos del certificado de usuario invocará al método ProcessResponseSign, que se encuentra en el fichero Default.aspx dentro del directorio viafirma. Lo único que tendremos que hacer es sobreescribir dicho método con el comportamiento deseado y recuperar todos los datos de la firma del objeto FirmaInfoViafirma.
En este ejemplo, si la firma ha sido correcta, redireccionamos al usuario a una página de destino.

override public void ProcessResponseSign(Viafirma.Estado estado,Viafirma.FirmaInfoViafirma firma){

    Viafirma.Log.Debug("Firma Viafirma realizada correctamente.");
    // Aquí ya tenemos todos los datos asociados al cliente y a su firma.    
    //redireccionamos al usuario a la p gina destino considerando el usuario ya ha finalizado la firma.
    if(Viafirma.Estado.OK== estado){
       Session["resultadoFirma"]= firma;
       Uri url=new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/resultadoFirma.aspx"));
       HttpContext.Current.Response.Redirect(url.AbsoluteUri);
    } else{
      // Hay problemas al firmar.
    }
}

A continuación se muestran algunas capturas de pantalla de la aplicación de ejemplo ASP.NET en acción:

Página inicial de la aplicación de ejemplo: ( contenida en el Kit de desarrollo de Viafirma)

Ejemplo de firma desde ASP.NET 1

La aplicación ASP.NET interactuando con Viafirma para realizar la firma.

Ejemplo de firma desde ASP.NET 2

La aplicación ASP.NET muestra algunos de los datos retornados tras el proceso de firma.

Ejemplo de firma desde ASP.NET 3 retornando los resultados de la firma


C# / ASP.NET : Firma digital y autenticación con Viafirma (I)

Posteado por Felix G. Borrego en Noviembre 24th, 2008

Aunque Viafirma ofrece todos sus servicios mediante métodos estándar ( Servicios Web y OpenID), hemos desarrollado un cliente para .Net que permite de una forma muy sencilla integrar aplicaciones desarrolladas en esta tecnología con los servicios que ofrece Viafirma.

En este artículo mostraremos cómo añadir las dlls necesarias al proyecto y cómo hacer uso de los diferentes servicios de firma digital (XAdES, Facturae, PDF sign, etc… ), autenticación (FNMT, Camerfirma, Firma profesional, DNIe, etc…),  custodia (integridad, etc…)  y verificación (CRLS, OCSP, etc…).

1- Añadir las dependencias necesarias

Es necesario que incorporemos al proyecto las siguientes dlls incluidas en el kit de desarrollo de Viafirma:  DotNetOpenId.dll, log4net.dll y ViafirmaClientDotNet.dll.

Por otro lado también necesitaremos añadir el  directorio “viafirma” y que contiene los ficheros:

  • Default.aspx: con los métodos que se ejecután cuando el proceso de autenticación o firma finalice.
  • viafirmaStyle.css: con la apariencia que viafirma adoptara para el proceso de autenticación o firma.
  • xrds.aspx: necesario para el correcto funcionamiento de la comunicación OpenID.

2- Creamos la página de acceso a la autenticación.

Creamos una primera página aspx en la que simplemente colocaremos un botón de acción asociado a un controlador de página que utilizará el API de Viafirma para autenticar con certificado digital al usuario..

El código de la aplicación de ejemplo queda como el siguiente:

<%@ Page Language="C#" Inherits="AplicacionEjemploClienteViafirma.Default" %>
<html>
<body>
<h2>Ejemplo de integración Viafirma con .Net</h2>
<form id="form1" runat="server">
<p>Pruebe la autenticación</p>
<asp:button id="autenticarButton" runat="server" text="Autenticar al usuario con certificado o dnie" onClick="autenticarButton_Click" />
</form>
</body>
</html>

3- Implementar el evento  autenticarButton_Click

En este método simplemente indicaremos al cliente de viafirma cuál es la url pública de acceso a Viafirma y cuál es la url de acceso al servicio web de Viafirma.

public void autenticarButton_Click(object sender,EventArgs e){
    // Configuramos el cliente de viafirma ( En una aplicación real esto se realiza al iniciar la aplicación)
    ViafirmaClientFactory.Init("http://pruebas.viavansi.com/viafirma","http://pruebas.viavansi.com/viafirma");
    // Obtenemos una instancia del cliente e iniciamos la autenticación
   ViafirmaClient clienteViafirma=ViafirmaClientFactory.GetInstance();
   clienteViafirma.Autenticate();
}

Con este simple código ya conseguimos que nuestra aplicación ASP.NET utilice Viafirma para que sea ésta la responsable de solicitar, validar y recuperar el certificado o DNI electrónico del usuario. Una vez que el proceso termine, Viafirma devolverá el control a la aplicación ASP.NET retornando todos los datos obtenidos del certificado.

Obtener los datos de respuesta

Una vez que Viafirma obtenga los datos del certificado de usuario invocara al método ProcessResponseAutenticacion, que se encuentra en el fichero Default.aspx dentro del directorio viafirma. Lo único que tendremos que hacer es sobreescribir dicho método con el comportamiento deseado y recuperar todos los datos del certificado del objeto UsuarioGenericoViafirma.
En este ejemplo si la autenticación ha sido correcta redireccionamos al usuario a una página de destino.

override public void ProcessResponseAutenticaction(Viafirma.Estado estado,Viafirma.UsuarioGenericoViafirma usuario){
    Viafirma.Log.Debug("Autenticación Viafirma realizada correctamente. Resultado:"+ estado);
    // Aquí ya tenemos todos los datos asociados al cliente. y redireccionar al usuario a la página destino
    // considerando el usuario ya autenticado.
    if(Viafirma.Estado.OK== estado){
        Session["resultadoAutenticacion"]= usuario;
        Uri url=new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/resultadoAutenticacion.aspx"));
        HttpContext.Current.Response.Redirect(url.AbsoluteUri);
    }else{
        // Hay problemas al validar.
    }
}

Próximamane: C# / ASP.NET : Firma digital y autenticación con Viafirma (II)