Etiqueta: autenticación digital

Viafirma Manager (III) – Fuentes de Validación + TSA

15 may 2012

A pesar de la ola de calor que está azotando España estos días, nos hemos animado y hemos decidido volver a presentaros novedades sobre el sistema de monitorización de firma electrónica más completo del mercado.

Siguiendo la linea de nuestros post de descripción informativa sobre Viafirma Manager,  lanzamos la tercera parte de la saga, en donde abordaremos como tratar las fuentes de validación y como configurar las autoridades de sellado de tiempo (TSA).

Fuentes de Validación

Viafirma Platform soporta la gestión de los servicios de validación de las distintas Autoridades de Certificación, configuradas en su interfaz de administración Viafirma Manager:

• Permite una gestión de las Autoridades de Certificación y Autoridades de Validación que se deseen soportar, a nivel sistema y a nivel aplicación concreta.

• Para facilitar la tarea a los Administradores del sistema, se utiliza por defecto el mecanismo de validación que venga informado en la estructura X509.v3 del certificado digital en cuestión.

• Se permite especificar para cada Autoridad de Certificación un servicio específico de validación, si no se desea utilizar el informado por defecto en el certificado digital.

• Se permite especificar más de un servicio y Autoridad de Validación por Autoridad de Certificación, y un orden de prioridad a seguir en el caso de que uno de ellos esté caído. Por ejemplo, “verifica primero vía OCSP y si no hay respuesta, por CRL’s”. Incluso pudiendo escoger si, en el caso de que todos los servicios den un error de respuesta, se pueda o no continuar la operación sin haber garantizado el estado de revocación del certificado.

Detalle de pantalla de definición de rutas de validación para un tipo de certificado

Además, se permite gestionar qué autoridades de certificación están habilitadas para cada aplicación concreta (por ejemplo, “la aplicación X admite sólo DNIe”) e incluso se permite dar de alta Autoridades de Certificación no reconocidas (por ejemplo, una interna creada con un software de PKI) y sus Autoridades de Validación correspondientes, siguiendo las mismas normas y opciones que con las Autoridades de Certificación reconocidas.

Configuración de autoridades de sellado de tiempo (TSA)

Viafirma Platform soporta la interacción con cualquier TSA (Timestamping Authority) que cumpla el estándar RFC 3161, necesario en formatos de firma (cualquiera de firma longeva) que recojan dentro de las evidencias de firma sellos de tiempo. Este soporte de sellados de tiempo puede ser utilizado con cualquier tipo de formato que admita la inclusión de los timestamping, modalidad de firma, operación en cliente, servidor, etc.
En primer lugar, se procede a configurar en la interfaz de administración Viafirma Manager los distintos servicios de TSA que tenemos disponibles a nivel plataforma. Esta configuración es muy sencilla, ya que esencialmente lo único que necesitaremos es la URL del servicio de TSA.

Pantalla de configuración TSA

Posteriormente, la plataforma permite asociar a una aplicación:

•    La autoridad o autoridades de sellado de tiempo (TSA) que se utilizarán en cada caso.

•   El orden de invocación de las TSA. Ello permite, por ejemplo, que si un servicio de TSA no esté disponible, se utilice el siguiente configurado y asociado a la aplicación.

Asociación de dos TSA

Por último, el sistema almacena para cada operación datos como la TSA que finalmente se utilizó en una operación de firma, el tiempo de respuesta de la misma, etc.

Datos de uso TSA

En el siguiente post hablaremos sobre los Roles de Acceso y Auditoría, pero mientras tanto, nos gustaría escuchar cualquier comentario, duda o aclaración que pudiera haber.

Firma electrónica con DNIe en iPhone y iPad con Viafirma

11 abr 2012

Aunque ya llevábamos dando pistas durante las últimas semanas, en Viafirma tenemos el placer de anunciaros que hemos finalizado, tras muchos meses de trabajo, el soporte integral del DNI electrónico en smartphones iPhone y tablets iPad, con capacidad tanto de autenticación como firma electrónica reconocida en estos dispositivos móviles. Para ello hemos tenido que aunar en una sola aplicación móvil Objective C el driver del DNIe (utilizando los comandos APDU, establecimiento del canal seguro, encriptación, etc.) y el cliente de firma electrónica.

Sinceramente consideramos que esto es un verdadero bombazo y una revolución en el sector de la firma electrónica. Todos nos estaremos dando cuenta del incremento exponencial de uso de smartphones y tablets en la vida cotidiana tanto personal como profesional, y pensamos que la firma electrónica no debería quedarse atrás, como está ocurriendo en la realidad. Dejando al margen los usuarios de las soluciones integradas con Viafirma Platform, pocos usuarios pueden autenticarse y firmar electrónicamente sin encontrar problemas en Linux, Mac OS X (a título personal me toca usar máquinas virtuales Windows), o con iPhone, iPad, Android, BlackBerry o Windows Phone… sin tener que mandarle el certificado a ninguna plataforma centralizada para que firme por él un servidor.

Creemos que incluir el soporte del DNIe en iPhone y iPad ahora, y Android próximamente, ayudará no sólo a potenciar la firma electrónica, sino también a fomentar de forma efectiva el uso del DNIe. Sinceramente la experiencia de usuario y la usabilidad del DNIe es mucho mejor en el iPhone y iPad que en un ordenador convencional, al menos en mi caso personal como usuario, y consideramos que ésta era precisamente una de las debilidades del modelo actual. Usar el DNIe en nuestro smartphone o tablet es tan fácil como conectar el lector, insertar la tarjeta y meter el PIN cuando se nos pida.

Os adelantamos algunas características de este logro:

  • Se utiliza un lector que se inserta en el puerto dock del iPhone / iPad. Este lector ha sido desarrollado conjuntamente con un fabricante que ha procedido a adquirir las diversas certificaciones de seguridad (FIPS, etc.), y tendrá un coste bastante reducido (aunque es pronto para asegurarlo, un orden de magnitud razonable podrían ser 29 €). Habíamos experimentado previamente con algunos lectores Bluetooth compatibles con BlackBerry y algún Android, pero su precio (200 – 300 €) nos hicieron pensar en una inviabilidad realista del proyecto.
  • El lector es realmente móvil: de reducidas dimensiones y con una estética muy agradable. Es un periférico más de tu smartphone o tablet. El lector ya ha sido reconocido por Apple y es compatible (y probado) en iOS 4, iOS 5.0 y 5.1.
  • Hemos trabajado con prototipos conjuntamente con nuestro fabricante, pero el lector podría estar disponible en un plazo de uno a dos meses.
  • La firma se hace 100% localmente en el móvil o tablet. Aunque esto es obvio, porque resulta imposible sacar la clave privada fuera del DNIe, hemos considerado oportuno este hecho. Para ello nos hemos apoyado en la tecnología de firma avanzada móvil Viafirma ya existente desde 2010 para plataformas iOS, Android, BlackBerry y Windows Phone.
  • Se alcanza el nivel de firma electrónica reconocida móvil, al utilizarse un dispositivo seguro de creación de firma.
  • El sistema es 100% plug & play. No hay que instalar nada en el móvil, aparte de la última versión de la aplicación móvil Viafirma. Esta aplicación se encarga de todas las operaciones criptográticas, haciendo tanto de driver, como de “applet” de firma electrónica reconocida que se ejecuta localmente en el dispositivo.
  • Disponemos de varios lectores y podemos realizar demostraciones in-situ desde ya mismo. ¡Podéis usar vuestros propios DNI electrónicos para comprobar el funcionamiento!
  • Cualquier aplicación integrada con Viafirma Platform, ya sea aplicación web o aplicación nativa móvil, dispondrá de soporte de DNIe en iPhone y iPad sin necesidad de realizar ningún desarrollo adicional. Resulta muy sencillo incluir funcionalidades de autenticación y firma electrónica con DNIe en iPhone / iPad en tu aplicación web o iOS.
  • Nuestro desarrollo será publicado con la mayor brevedad como actualización de nuestro cliente móvil iOS Viafirma, que ya permite realizar firma electrónica avanzada y local en cualquier aplicación integrada con Viafirma Platform.
  • Toda la lógica está en la aplicación nativa, que interactúa con nuestra plataforma para realizar las operaciones de validación, verificación, timestamping, custodia… por ello, de momento sólo funcionaría con soluciones integradas con nuestra plataforma Viafirma Platform. Sin embargo, es técnicamente posible construir bridges / clientes nativos para otras soluciones como @Firma (aFirma), etc. Las instituciones que pudieran estar interesadas en disponer de esta funcionalidad pueden contactarnos sin ningún compromiso.
  • Hemos realizado el desarrollo para el DNIe, pero es técnicamente posible extender el uso a otro tipo de tarjetas criptográficas / smartcards.

En nuestro canal Youtube hemos publicado algunos vídeos de firma electrónica en iPad y iPhone con nuestros DNIe, y pretendemos seguir publicando más en los próximos días y semanas. En este caso, hemos grabado un caso de uso consistente en una petición de firma para dos firmantes en nuestra plataforma de portafirmas Viafirma Inbox. Los firmantes proceden a firmar con su DNIe en un iPad y un iPhone. Veamos ambos vídeos (os recomendamos que los pongáis a pantalla completa para ver algo):

También queremos anunciaros que el lector que estamos usando será a medio plazo compatible con dispositivos Android de versiones 3.1 o superiores, ya que dispondrá de un puerto miniUSB que podrá conectarse al host USB del smartphone o tablet Android. Así, podremos también hacer firma electrónica reconocida móvil con smartcards y DNIe en dispositivos Android. Os mantendremos informados.

Viafirma Manager (II) – Estadísticas

06 mar 2012

Siguiendo la línea del primer post sobre Viafirma Manager, vamos a dedicar este a descubrir el módulo de estadísticas y búsqueda de este potente Add-on de Viafirma Platform.

El módulo de estadísticas y búsqueda avanzada de operaciones de Viafirma Manager es sin duda uno de los puntos fuertes de esta herramienta, y nos permitirá:

  • Disponer de estadísticas visuales sobre el nivel de éxito de las operaciones de firma electrónica y las causas de errores. Estas estadísticas pueden ser filtradas por un importante número de criterios: sistema operativo origen, agente de usuario (browser), tipo de dispositivo (escritorio, móvil), locale, aplicación invocante, formato de firma, autoridad de certificación…
  • Disponer de una búsqueda avanzada de gran potencia, que permitirá combinar filtros similares a los anteriores y llevarnos al detalle individual de una operación de validación, firma o verificación de cara a analizar los datos y metadatos de la misma. Por ejemplo, se puede realizar una búsqueda del tipo “localiza todas las operaciones de firma electrónica en formato PAdES, de la aplicación X, que tuvieran un tiempo de proceso mayor de 500 milisegundos, donde el agente de usuario sea Firefox y el sistema operativo sea Linux, en una fecha comprendida entre el 1 y el 31 de enero de 2012”.

Cuadro de mandos

En la figura anterior se puede observar un cuadro de mandos típico de Viafirma Manager. El administrador ha filtrado en la parte superior izquierda el espacio temporal que desea analizar, y no ha aplicado ningún filtro adicional. El sistema le está mostrando la distribución de ratios de éxito de operaciones (en la figura de ejemplo, 30.229 operaciones con un 94,46% de operaciones finalizadas satisfactoriamente).

El administrador tiene la capacidad de realizar filtros que modifican en tiempo real las gráficas presentadas; por ejemplo, seleccionando sobre el mismo rango temporal una distribución por tipos de agentes de usuario:

Cuadro filtrado

En tiempo real, cada vez que se aplica un filtro el sistema presenta una tabla de distribución de operaciones en la parte inferior de la pantalla:

Cuadro filtrado 2

Pulsando sobre la lupa podemos obtener el listado individual de todas las operaciones que cumplen dicho filtro. A este tipo de listados de operaciones que cumplen un conjunto de criterios se puede llegar también combinando filtros de la búsqueda avanzada. La siguiente figura muestra el resultado de una búsqueda de operaciones de firma electrónicas para una aplicación concreta, agente de usuario Safari, un rango de fechas de 3 días y formato de firma PDF:

Búsqueda avanzada de operaciones de firma

Pulsando en la lupa se puede acceder al detalle de una operación concreta, que contiene datos y metadatos específicos de la operación en función de su tipología.

El usuario dispone de una gran potencia de filtrado de la búsqueda avanzada, al disponer de un importante número de filtros y criterios disponibles, y poder combinarlos según su voluntad. Además, dispone de la posibilidad de exportar los resultados para tratarlos en otro tipo de soluciones externas.

Viafirma Manager (I) – Descripción técnica

21 feb 2012

Pensando en la valiosa información que se puede obtener a través de la evaluación de estadísticas, tal y como ocurre con herramientas como Google Analytics con las que todos trabajamos habitualmente, se nos ocurrió obtener datos estadísticos para nuestra plataforma de autenticación y firma electrónica, Viafirma Platform.

Nos pareció interesante poder conocer desde qué navegadores utilizaban más nuestra herramienta, si nuestros usuarios utilizaban nuestros clientes de firma móvil e incluso qué autoridades de certificación eran las más usadas y desde que aplicación.

De esta forma nació Viafirma Manager, uno de los productos de la Suite Viafirma y que poco a poco se ha convertido además en el panel de administración de la plataforma.

A través de varios artículos como éste, intentaremos daros a conocer esta herramienta. Hoy comenzaremos por su descripción técnica:

Viafirma Manager permite configurar el comportamiento de la plataforma de firma, realizar analítica de su uso, chequear la auditoría del sistema, gestionar permisos y roles,etc.
Uno de los grandes compromisos de la suite viafirma es su rendimiento. El subsistema de firma electrónica (Viafirma Platform) carece por ejemplo de lógica de acceso a base de datos, para
evitar que una posible caída o degradación de un servicio externo (posible en situaciones de extrema carga) pueda afectar a la disponibilidad de la firma. Así, la plataforma de firma electrónica puede operar totalmente stand-alone (salvo las necesarias conexiones a recursos externos como los servicios de validación de certificados de las Autoridades de Certificación o las TSA).

Por otro lado, nuestro manager dispone de una alta carga transaccional (entre sus responsabilidades está por ejemplo el almacenamiento de todos los datos y metadatos de todas y cada una de las operaciones gestionadas por la plataforma, la auditoría, la gestión de las políticas, configuración de CA’s, TSAs, etc.). Sin embargo, una eventual caída de viafirma manager no afecta al funcionamiento de la plataforma debido a las características de la comunicación entre ambos componentes, tal y como explicaremos a continuación:

Por un lado tenemos la necesidad de mantener al subsistema de firma electrónica aislado para evitar posibles riesgos de degradación del servicio, pero por el otro hay un evidente requisito de comunicación bidireccional entre la plataforma y el panel de administración: las operaciones gestionadas en viafirma platform deben ser enviadas a viafirma manager para su almacenamiento, mientras que la configuración gestionada por viafirma manager debe viajar a la plataforma para que ésta sepa cómo comportarse. La solución técnica que se ha tomado en la suite viafirma está basada en la puesta a disposición mutua de un espacio de caché compartido, tal y como se describe en la siguiente figura:

Descripcion Técnica Viafirma Manager

Para que esta comunicación vía caché sea posible, no es necesario que ambos productos compartan servidor o máquina virtual de Java, sino simplemente subred; el sistema de caché está preparado para realizar operaciones de autodescubrimiento y enlace a través de la red, de forma que se realice el link entre ambos productos de forma automática. Este mecanismo está habilitado también para la comunicación entre dos instancias distintas de la plataforma de firma: dos instancias de viafirma platform en red se ponen en modo clúster de forma automática al autodescubrirse.

El envío de la información de las operaciones de validación, firma electrónica, verificación, etc., es realizado desde la plataforma hacia viafirma manager de forma asíncrona y desatendida; la plataforma almacena esta información en ficheros de tipo log, y procesos ejecutados en hilos independientes se encargan de su envío hacia viafirma manager, donde son almacenados como registros de auditoría y posteriormente explotados.

Cabe destacar como claro caso de éxito de este modelo la implantación de la Fundación Tripartita para la Formación en el Empleo (dependiente del INEM) que, realizando solamente en una de sus aplicaciones más de 6 millones de operaciones anuales, tiene un ratio de éxito superior al 97% y un tiempo de servicio efectivo superior al 99%.

firma electrónica: superando los 8 millones de transacciones

11 oct 2010

Tras finalizar este penúltimo trimestre del año, en la Fundación Tripartita han hecho balance del uso de Viafirma en su sistema de tramitación de ayudas a los planes formativos.

El resultado ha sido comparado con el último informe que recogía el uso de nuestra plataforma en sus primeros 8 meses de puesta en marcha.

Los números hablan por sí solos, demostrando mejoras en el rendimiento y un incremento parejo de todos los certificados utilizados, a excepción del DNIe, que fue una de las CAs que menos creció proporcionalmente, pero si tenemos en cuenta que la mayoría de usuarios que usan este sistema son empresas, está justificada esta baja participación del DNIe. En total, han superado los 8 millones de transacciones.

Ocho Millones de Transacciones

tabla con el número de transacciones registradas con Viafirma en Tripartita

Desde el 30-abril-09 hasta el 30-sep-2010 (17 meses)

Ratios de Efectividad

tabla que muestra el ratio de efectividad en las transacciones con viafirma

Desde el 30-abril-09 hasta el 30-sep-2010 (17 meses)

Entre los errores registrados en cada tipo de transacción se incluyen incluso las finalizaciones voluntarias de sesión por parte de un usuario, por ejemplo; tras iniciar el proceso de autenticación en el sistema cancela la operación porque no tenía el certificado o el DNIe en ese momento (o en el equipo desde el que ha accedido). Esta operación “no completada” el sistema la registra como transacción no terminada correctamente.

Con todo ello, seguimos mejorando día a día para seguir moviéndonos en estos valores tan cercanos al cien por cien, apostando constantemente por nuestra matriz de compatibilidad, principal responsable de estos números.

Certificados Utilizados por CA

gráfica del número de certificados utilizados por cada CA

Desde el 30-abril-09 hasta el 30-sep-2010 (17 meses)

Actualización v3

Por otro lado, desde la Fundación Tripartita se ha aprobado la actualización a la nueva versión 3 de Viafirma, para beneficiarse, entre otras nuevas funcionalidades, de la nueva matriz de compatibilidad para dispositivos móviles, permitiendo a las empresas que actualmente acceden a su Aplicación de Acciones Formativas de las Empresas desde los dispositivos móviles iPhone, Android, iPad y próximamente BlackBerry.

También podrán incorporar políticas para gestión de Firmas Longevas, con los formatos de firma XAdES-XL y XAdES-A que incluye Viafirma en esta versión.

Usando Certificados Digitales desde mi SmartPhone

29 sep 2010

Hoy vamos a recordar cómo instalar un Certificado Digital en nuestro dispositivo móvil o teléfonos celulares y poder así autenticarnos o firmar electrónicamente en sistemas donde ya estén usando Viafirma v3.

iPhone /iPad / iPod Touch

Para estos tres dispositivos de Apple nos ayudaremos de la transferencia de ficheros asociados a Aplicaciones disponibles en iTunes. Como se muestra en la siguiente imagen, sólo tenemos que arrastrar nuestro Certificado Digital (en formato .p12 o .pfx) a nuestra Aplicación Viafirma.

Transferencia de Ficheros en iTunes

Seleccionando nuestro certificado

Recuerda que el cliente móvil de Viafirma para estos tres dispositivos está disponible en el Apple Store de manera gratuita.

Descarga gratuita de Viafirma Client

Android

En este sistema operativo la cosa se simplifica más aún. Para usar tu Certificado Digital desde Android únicamente tendrás que conectar tu dispositivo al PC, portátil, etc. donde tengas tu .p12 o .pfx. Lo copias en el raiz del sistema de ficheros de tu Android (da igual que esté en la tarjeta de memoria externa que en la memoria interna), y listo.

Captura sistema de ficheros en Android

Recuerda que el cliente móvil de Viafirma para este dispositivo está disponible en el Market de Google de manera gratuita.

Descarga gratuita de Viafirma Client en el Market de Google

BlackBerry

Muy pronto publicaremos el nuevo cliente de Viafirma para BlackBerry, con el que completaremos toda la gama profesional de SmartPhones desde la que podrás hacer uso de tu Certificado Digital.

Nostálgicos

Y de regalo, volvemos a acordarnos de nuestra queridísima Olivetti Linea 98, con la que tantas horas perdimos muchos de nosotros intentando mejorar nuestra mecanografía…uff. Si tienes un buen día, tal vez puedas firmar con tu DNIe con la tecla mágica de firma, que fue incorporada en los últimos modelos de los años 80

Nuestros Post relacionados

Plataforma de autenticación y firma digital sobre WebLogic

18 jun 2010

La nueva versión de Viafirma, coincidiendo con su instalación en dos importantes entidades bancarias,  ofrece soporte oficial para Oracle WebLogic 11. De esta forma, junto con las plataformas ya soportadas por Viafirma (Tomcat 5, Tomcat 6, Websphere, etc…), ahora se incluye:

El proceso de instalación es muy sencillo,  por lo que siguiendo los pasos del manual de instalación de Viafirma para Weblogic podremos disponer de sus servicios de autenticación (DNIe o cualquier otro certificado digital) y firma digital (XAdES, PAdES, CMS, CAdES, facturae, firma en lotes,…) desplegados sobre Weblogic .

Viafirma en Twitter

07 jun 2010

Hace algunos días que Viafirma tiene su canal twitter. Invitamos a todos los interesados en la plataforma a seguirnos por esa vía, donde intentaremos dar primicias, anunciar liberaciones de versiones, etc.

Drupal: nuevo módulo de autenticación con DNIe

18 may 2010

En Viavansi hemos desarrollado un nuevo módulo para Drupal que permite la autenticación de usuarios mediante el DNIe y otros certificados digitales. Aprovechando el soporte de Viafirma para el protocolo de intercambio de identidades OpenId, la integración entre Drupal y nuestra Plataforma de Autenticación y Firma Digital ya es posible.

En este artículo, explicaremos cómo conseguirlo a través de esos sencillos pasos.

Primer Paso: descarga el módulo

En el siguiente enlace podrás descargar el nuevo módulo de autenticación para Drupal: viafirma-drupal-1.0.zip

Segundo Paso: instala tu módulo

Copia el módulo Viafirma en la carpeta /sites/all/modules. Recuerda que para ello, deberás tener permisos de escritura.

Tercer Paso: configura tu módulo

Una vez instalado deberás acceder a tu Drupal como Administrador para poder activar el nuevo módulo Viafirma.

Activa el Módulo

captura activación módulo

Configura el Módulo

captura configuración módulo

Cada parámetro está comentado o dispone de valores ejemplos. También podrás acceder a la ayuda de configuración de viafirma, con información útil sobre el estado de la instalación del módulo.

Cuarto Paso: configura tus usuarios

La gestión de usuarios mantendrá el método user/password, por lo que éstos podrán seguir manteniendo esta forma de autenticación. Para aquellos que deseen autenticar con su DNIe u otro tipo de certificado, deberán asegurarse que su userid sea su número de DNI/NIE. En resumen, la instalación de este nuevo módulo te permitirá un doble método de autenticación: user/password y DNIe/certificados digitales.

captura configuración usuarios

Con el nuevo módulo, los usuarios tendrán un nuevo método de autenticarse, pudiendo hacerlo con su DNIe o con cualquier de los certificados soportados por Viafirma en estos momentos.

captura inicio autenticación

Ahora, toda la responsabilidad recae en Viafirma, encargándose ésta de recuperar el certificado del usuario (en cualquier formato, software (.p12, .pfx) o hardware (smartCard, DNIe, token), validar su estado y, en caso de una validación satisfactoria, devolver a Drupal el identificador del usuario, en este caso, su DNI o NIE.

captura applet de autenticación de Viafirma

Como resultado, nuestros usuarios perfectamente autenticados en Drupal.

captura mensaje de bienvenida a Drupal

Si ya usas Viafirma, y cuentas con portales desarrollados con Drupal, ahora es el momento de incorporar la autenticación con DNIe que necesitabas.

Próximamente, firmando documentos desde Drupal con tu DNIe.

XWiki: autenticando con Viafirma

18 may 2010

Es de todos conocidos los grandes beneficios de usar una Wiki, para tener organizado y actualizado una gran cantidad de información y contenido, de forma que pueda ser rápidamente consultada y actualizada. Sin ninguna razón especial más allá de la simple curiosidad, vamos a poner como ejemplo en este caso una “implementación” wiki basada en Java (XWiki) y vamos a conseguir de forma sencilla que los usuarios puedan logarse con su Certificado Digital o DNI electrónico (DNIe).

Como no podría ser de otra forma, vamos a hacer uso del servicio de autenticación de la plataforma Viafirma, sirviéndonos de su cliente de autenticación, apoyándonos en su espectacular matriz de compatibilidad, además mantendremos el acceso por usuario/contraseña habitual de XWiki. Para realizar esta integración nos hemos basado principalmente en la documentación que podemos encontrar en las páginas oficiales de ambas plataformas, por un lado tenemos a Viafirma y por otro lado la web para desarrolladores de XWiki Development Zone

Primero una idea de lo que queremos hacer:

Dentro del formulario de login de XWiki, pondremos un enlace a una url dentro del propio XWiki que sea de la forma:
http://xwikiserver/.../viafirma.login

Esta URL será capturada dentro de la XWiki por un Filter que enviará al usuario automáticamente a Viafirma, que será el encargado de pedir el certificado digital al usuario y analizarlo (validarlo), tras esto enviará al usuario nuevamente a la XWiki (Viafirma coloca en la Session de esta petición el resultado de la validación del Certificado y será XWiki el encargado de tratar ese resultado) con una url con la forma:

http://xwikiserver/.../viafirmaAuthentication

El Request de esta URL será capturado por un Servlet que extiende al ViafirmaClientServlet, que nos proporciona el cliente de Viafirma, capturando de sesión el UsuarioGenericoViafirma que se ha obtenido. Este usuario aún no es un “usuario XWiki”. Este mismo Servlet se encargará de capturar la dirección a la que el usuario inicialmente quería acceder en XWiki y lo redirigirá allí de nuevo, siempre y cuando los resultados de Viafirma hayan sido válidos.

Por otro lado, extenderemos la clase XWikiAuthServiceImpl que implementa el servicio básico de autenticación de XWiki, introduciendo la posibilidad de realizar el Login en XWiki a partir de un UsuarioGenericoViafirma que tenemos en Sesión, para esto usaremos el API nativo de XWiki.

Por simplicidad para este ejemplo he adoptado la siguiente política de logado: dada una persona con NIF 12345678Z, su “Usuario XWiki” correspondiente será XWiki.12345678Z, es decir, debe existir un usuario dado de alta en XWiki cuyo Login coincida con el DNI de la persona. Cuando tengamos un UsuarioGenericoViafirma, consultamos su NIF y le preguntamos la XWiki a través de su API si existe usuario con ese Login. ¿Podría hacerse de forma más elaborada? Por supuesto, en vez de buscar un usuario con Login igual al Nif, podríamos haber definido una propiedad nueva para los Usuarios XWiki y para usarlo con este propósito, cuando lo hagáis no dudéis en poner vuestros comentarios al final de este post.

La secuencia de llamadas entre todos estos componentes lo podemos ver aquí:

Vamos a ir explicando paso a paso cómo hacer todo esto:
Paso 1.- Modificación del formulario de Login

Debemos editar el fichero templates/login.vm e introduciremos la redirección al servlet. Os propongo dos opciones, un enlace dentro de formulario ya existente y un formulario nuevo (para nuestro ejemplo funcionarán los dos):

...
<form>
...
#template("viafirmaLink.vm") <-Hiperenlace: opcion A
...
</form>
#template("viafirmaForm.vm") <- Formulario: opción B
...

Posteriormente copiaremos los ficheros viafirmaLink.vm y viafirmaForm.vm dentro del directorio templates.
Contenido de viafirmaLink.vm:

<div style="margin: 1em;">
 <a href="viafirma.login">ACCESO CON CERTIFICADO DIGITAL</a>
 <br/>
</div>

Contenido de viafirmaForm.vm:

<form id="loginFormViafirma" action="viafirma.login" method="post">
 <div>
 <fieldset>
 <legend>Certificado Digital</legend>
 <div><span><input type="submit" value="VIAFIRMA"/></span></div>
 </div>
</form>

Vemos que las dos opciones propuesta envian al usuario a la URL http://xwikiserver/…/viafirma.login .

Paso 2.- Implementación de un Filter, que será el encargado de capturar las peticiones a …/viafirma.login y enviar al usuario hacia Viafirma para que se autentique:

package org.viafirma.xwiki;
public class AuthenticationFilter implements Filter { ... }

Paso 3.- Implementación de un Servlet que recogerá de vuelta el resultado ofrecido por parte de Viafirma tras el análisis del certificado, capturando las peticiones a …/viafirmaAuthentication y coloque en sesión al usuario UsuarioGenericoViafirma:

package org.viafirma.xwiki;
public class AuthenticationServlet extends ViafirmaClientServlet implements Serializable { ... }

Paso 4.- Implementaremos un mecanismo usando otro Filter, para que Viafirma use una CSS definida por nosotros mismos. Viafirma “pide” por defecto una CSS llamada viafirmaStyle.css. En este ejemplo hemos optado por que XWiki sirva el CSS que usará Viafirma, aunque quizás lo más conveniente sea colocar este CSS en un servidor externo, por ejemplo un Apache, pero de todos modos vamos a hacerdo a modo de ejemplo. Bastaría con colocar una regla en Apache (por ejemplo) para que las peticiones al archivo viafirmaStyle.css no pasen a la XWiki, esto os lo dejo a vosotros.

Paso5.- Extenderemos el Servicio de Autenticación de XWiki, que sustituirá a la que tiene por defecto esta plataforma:

package org.viafirma.xwiki;
public class ViafirmaAuthImpl extends XWikiAuthServiceImpl implements  Serializable { ... }

Posteriormente, deberemos modificar el fichero xwiki.cfg de XWiki añadiendo o modificando:

xwiki.authentication.authclass=org.viafirma.xwiki.ViafirmaAuthImpl

Paso 6.- Configuraremos el web.xml de XWiki para dar de alta estos Filters y Servlets que hemos creado, adaptando los valores de los parámetros a nuestro entorno (url de Viafirma y ruta al css):

...
 <filter>
 <filter-name>ViafirmaLoginFilter</filter-name>
 <filter-class>org.viafirma.xwiki.AuthenticationFilter</filter-class>
 <init-param>
 <param-name>VIAFIRMA_URL</param-name>
 <param-value>http://viafirma.viavansi.com/viafirma</param-value>
 </init-param>
 <init-param>
 <param-name>VIAFIRMA_WS</param-name>
 <param-value>http://viafirma.viavansi.com/viafirma</param-value>
 </init-param>
 </filter>
 <filter>
 <filter-name>ViafirmaStyleFilter</filter-name>
 <filter-class>org.viafirma.xwiki.ViafirmaStyleFilter</filter-class>
 <init-param>
 <param-name>PATH_CSS</param-name>
 <param-value>D:/xwiki/skins/colibri/colibri.css</param-value>
 </init-param>
 </filter>

 <filter-mapping>
 <filter-name>ViafirmaLoginFilter</filter-name>
 <url-pattern>*.login</url-pattern>
 </filter-mapping>
 <filter-mapping>
 <filter-name>ViafirmaStyleFilter</filter-name>
 <url-pattern>*.css</url-pattern>
 </filter-mapping>
 ...
 <!-- Servlet de Autenticación de Viafirma-->
 <servlet>
 <servlet-name>viafirmaAuthentication</servlet-name>
 <servlet-class>org.viafirma.xwiki.AuthenticationServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>viafirmaAuthentication</servlet-name>
 <url-pattern>/viafirmaAuthentication/*</url-pattern>
 </servlet-mapping>

Finalmente tendremos esto:

Teneis el proyecto mavenizado y todos los fuentes usados en este ejemplo aquí:

Descarga de fuentes aquí

Para integrar este ejemplo en XWiki, sólo es necesario:

  1. Empaquetar las clases generadas en un .jar y copiarlo en el WEB-INF/lib de XWiki, también deberá copiar en esa carpeta todas las librerías dependientes.
  2. Realizar las modificaciones anteriormente indicadas en el formulario de Login.
  3. Copiar los archivos .vm a la ruta indicada anteriormente.
  4. Modificar y configurar el web.xml de XWiki.

Aquí os dejo unas capturas de pantalla para demostraros que todo esto funciona correctamente :)

Formulario para logarnos:

Finalmente, vemos que XWiki nos ha logado correctamente:

Selección del Certificado Digital en Viafirma, vereis que tiene el CSS que queremos (obviamente ese CSS se puede mejorar) :

Finalmente veremos que ya estamos logados en XWiki (enhorabuena !!) :

Esto nos da por pensar en próximos capítulos: ¿publicación de contenidos firmados digitalmente? Quién sabe…

Un Saludo.