Hace algún tiempo escribí un poco acerca de cómo realizar un acceso securizado con certificado de usuario a intranets haciendo uso de equipos F5 FirePass, en el ámbito de un proyecto de la empresa en la que trabajo.
Pues bien, la nota de prensa que escribí al respecto ha llegado (esta vez prácticamente íntegra) a portada de la web de mi empresa: GMV
Y aquí un acceso directo a la nota de prensa: GMV conecta la Universidad de Huelva al DNI-E
Qué se le va a hacer. Sigh…
Esta mañana he conseguido realizar una configuración exitosa en un dispositivo FirePass para permitir la identificación de usuarios con múltiples certificados de usuario mediante la extracción de registros de la cadena del certificado.
Los FirePass permiten realizar una extracción de un valor para realizar la autenticación de usuario que accede al dispositivo. Por defecto permite recabar los valores correspondientes al CN, SN o correo electrónico, pero ante la posibilidad de que se quiera extraer otro valor diferente, proporciona la posibilidad de usar una expresión regular para obtener un valor personalizado.
Sin embargo esto tiene lo que entiendo que es una limitación: aunque es posible tener instalados en el dispositivo varios Client Root Certificates, sólo permite introducir una única expresión regular, que se aplica a todos los certificados cliente. Por sí solo ello no sería mayor problema, pero se junta con un segundo inconveniente: la expresión regular anteriormente citada se compone mediante sintaxis perl, pero se ha escogido como carácter identificador de inicio y fin de la expresión el carácter “|”, que en expresiones regulares de perl expresa un OR. Para más inri, la documentación relativa a la sintaxis de las expresiones regulares de F5 (y en concreto de cuál es el carácter representativo del OR) es escasa o inexistente (o bien yo soy muy torpe y no he sido capaz de encontrarla).
Ante ello nos encontramos que si usamos certificados diferentes de manera simultánea tenemos que usar una única expresión para extraer el mismo valor de diferentes cadenas de datos. A continuación muestro dos cadenas de ejemplo:
/C=ES/serialNumber=11222333J/SN=APELLIDO1/GN=NOMBRE/CN=APELLIDO1 APELLIDO2, NOMBRE (AUTENTICACI\
En este primer certificado, correspondiente a un DNI Electrónico, el NIF de la persona se identifica con el campo serialNumber. Para este tipo de certificado podría extraerse el DNI con una expresión como la siguiente:
|serialNumber=(\d{8})|
/C=ES/O=FNMT/OU=FNMT Clase 2 CA/OU=123456789/CN=NOMBRE APELLIDO1 APELLIDO2 NOMBRE – NIF 11222333J
En este segundo certificado, expedido por la FNMT, el NIF aparece dentro de un campo CN. Para este tipo de certificado podría extraerse el DNI con una expresión como la siguiente:
|NIF (\d{8})|
Como se puede ver, ambas secuencias son completamente diferentes. En condiciones normales se podría resolver mediante una disyunción, pero en este caso no esta opción, por las razones expuestas anteriormente, no es viable.
La solución a este problema viene dada por el uso de las clases de caracteres ([ ]). En la primera expresión el DNI viene precedido por la secuenca de estos cuatro caracteres: “ber=”, mientras que en la segunda viene precedido por estos cuatro: “NIF “. Si componemos una expresión que busque un grupo de ocho caracteres numéricos (en este caso sólo nos interesa el DNI, no el NIF, por lo que no es necesaria la letra) precedido por pares alternos de ambos tipos de caracteres, queda una expresión como esta:
|[bN][eI][rF][= ](\d{8})|
que es capaz de extraer el DNI del dueño del certificado en ambos casos.
Si me dejan, otro día contaré en qué se está usando esto.
Editado: Ya se puede decir en qué se está usando esto: La Universidad de Huelva ya tiene acceso seguro al (sic) DNI electrónico
¿Qué me deparará el día de mañana? No lo sé, pero sé que la semana que viene van a ser todos los almuerzos a base de fiambreras de ensaladita. Lo que llega a hacer uno para no ir a comer a Ingenieros con el solano de las 3 de la tarde en pleno mes de julio…
Situación: estás importando una base de datos bastante gorda desde un archivo de volcado, y por alguna extraña razón el programa con el que realizas la importación solicita constantemente introducir un carácter de sustitución. Al principio lo haces, y es tremendamente fastidioso, porque salta una y otra vez, cada dos por tres. Al poco te das cuenta de que puedes simplemente pulsar la tecla “Escape”. Una vez. Otra vez. Otra más. Y otra, otra y otra… Entonces es cuando aplicas la técnica “Homer Simpson” de productividad:
Como se puede ver, siempre aplicando los últimos avances en interfaz hombre-máquina…
Por cierto, que el sistema se tiró como hora y media importando datos con la tecla de escape pulsada. Cuando tuve que irme a casa, sustituí el cargador del portátil por un bloque de tarjetas de presentación.