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

29 nov 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


Si te ha gustado esta entrada, ¿por qué no compartirla?

10 Respuestas Para “C# / ASP.NET : Firma digital y autenticación con Viafirma (II)”

  1. ae 03 de marzo de 2009 at 12:14 hrs. #

    Muy interesante, señor.

    ¿Algún ejemplo para Windows con C# para poder utilizar la firma electrónica XAdES ?

    ¿ Cómo puedo conseguir el kit de desarrollo de Viafirma ? Es open source ?

    Gracias.

  2. Félix García Borrego 16 de junio de 2009 at 18:38 hrs. #

    Hola,
    El kit de desarrollo para .Net no es opensource aunque tenemos planes para proporcionarlo próximamente de forma gratuita.

  3. Leonardo Quintana 23 de septiembre de 2009 at 15:27 hrs. #

    me gustaria saber como se adquiere el kit para .NET y cual es el costo de licencia.

  4. adrian 17 de febrero de 2010 at 01:29 hrs. #

    A mi tambien me gustaría saber como puede conseguirse el kit para .NET.
    ¿Es necesario tener la plataforma de viafirma o solo con disponer del kit es suficiente?

  5. mily 27 de noviembre de 2012 at 22:04 hrs. #

    Buen aporte, pero una duda… este dll es a pago??
    alguien sabe?

  6. jcastillo 28 de noviembre de 2012 at 07:23 hrs. #

    Hola!

    La ddl y el kit para desarrollo se pueden descargar gratis de nuestro portal para desarrolladores de firma digital: http://developers.viafirma.com/descargas

    Eso sí, para que podáis usar los kits debéis solicitar unas API-KEYs para el desarrollo. Las credenciales son solo para desarrollo, una vez que paséis a producción sí que tendréis que pagar algo.

    Un saludo,

  7. Rodolfo 25 de julio de 2013 at 01:15 hrs. #

    Que tal, estoy realizando la prueba de las dlls en ASP .NET, me interesa saber lo siguiente:

    1. Si puedo firmar una dll de una aplicación la cuál quiero garantizar que no se modifique posteriormente? (por eso quiero realizarle una firma).

    2. Si me pudieran proporcionar una API-KEYs para el desarrollo

    3. Que costo tiene la licencia? y que planes manejan?

    saludos

    saludos

  8. Jorge Castillo 25 de julio de 2013 at 09:20 hrs. #

    Hola Rodolfo,

    Para responder a tus dudas y obtener tu API-KEY puedes ponerte en contacto con nuestros compañeros a través del siguiente formulario: http://developers.viafirma.com/es/contact

    Un saludo,

  9. We’re also a gaggle connected with volunteers as well as starting a whole new program in your area. Your site offered united states by using useful facts to help paintings in. You must have done the strong occupation plus your complete neighborhood will be pleased back.

Trackbacks and Pingbacks

  1. Xnoccio - » C# / ASP.NET : Firma digital y autenticación con Viafirma (I) - 16 de junio de 2009

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

Deje una respuesta