msgbartop
Dale fuego a un hombre y estará caliente un día. Préndele fuego y estará caliente el resto de su vida
msgbarbottom

22 nov 07 Identificación en FirePass con múltiples certificados de usuario mediante la extracción de registro

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

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)
Comparte este artículo:
  • Twitter
  • Facebook
  • email
  • StumbleUpon
  • Delicious
  • Google Reader
  • LinkedIn
  • BlinkList

Comentarios de los lectores

  1. |

    [...] algún tiempo escribí un poco acerca de cómo realizar un acceso securizado con certificado de usuario a intranets haciendo uso [...]

    Responder a este comentario

Deje un comentario







cinco − 3 =