{"id":775,"date":"2007-11-22T21:12:35","date_gmt":"2007-11-22T20:12:35","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=775"},"modified":"2007-11-22T21:12:35","modified_gmt":"2007-11-22T20:12:35","slug":"identificacion-en-firepass-con-multiples-certificados-de-usuario-mediante-la-extraccion-de-registro","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=775","title":{"rendered":"Identificaci\u00f3n en FirePass con m\u00faltiples certificados de usuario mediante la extracci\u00f3n de registro"},"content":{"rendered":"<p>Esta ma\u00f1ana he conseguido realizar una configuraci\u00f3n exitosa en un dispositivo FirePass para permitir la identificaci\u00f3n de usuarios con m\u00faltiples certificados de usuario mediante la extracci\u00f3n de registros de la cadena del certificado.<\/p>\n<p>Los FirePass permiten realizar una extracci\u00f3n de un valor para realizar la autenticaci\u00f3n de usuario que accede al dispositivo. Por defecto permite recabar los valores correspondientes al CN, SN o correo electr\u00f3nico, pero ante la posibilidad de que se quiera extraer otro valor diferente, proporciona la posibilidad de usar una expresi\u00f3n regular para obtener un valor personalizado.<\/p>\n<p>Sin embargo esto tiene lo que entiendo que es una limitaci\u00f3n: aunque es posible tener instalados en el dispositivo varios <em>Client Root Certificates<\/em>, s\u00f3lo permite introducir una \u00fanica expresi\u00f3n regular, que se aplica a todos los certificados cliente. Por s\u00ed solo ello no ser\u00eda mayor problema, pero se junta con un segundo inconveniente: la expresi\u00f3n regular anteriormente citada se compone mediante sintaxis perl, pero se ha escogido como car\u00e1cter identificador de inicio y fin de la expresi\u00f3n el car\u00e1cter \u00ab|\u00bb, que en expresiones regulares de perl expresa un <em>OR<\/em>. Para m\u00e1s inri, la documentaci\u00f3n relativa a la sintaxis de las expresiones regulares de F5 (y en concreto de cu\u00e1l es el car\u00e1cter representativo del OR) es escasa o inexistente (o bien yo soy muy torpe y no he sido capaz de encontrarla).<\/p>\n<p>Ante ello nos encontramos que si usamos certificados diferentes de manera simult\u00e1nea tenemos que usar una \u00fanica expresi\u00f3n para extraer el mismo valor de diferentes cadenas de datos. A continuaci\u00f3n muestro dos cadenas de ejemplo:<\/p>\n<blockquote><p>\/C=ES\/serialNumber=11222333J\/SN=APELLIDO1\/GN=NOMBRE\/CN=APELLIDO1 APELLIDO2, NOMBRE (AUTENTICACI\\<\/p><\/blockquote>\n<p>En este primer certificado, correspondiente a un DNI Electr\u00f3nico, el NIF de la persona se identifica con el campo <em>serialNumber<\/em>. Para este tipo de certificado podr\u00eda extraerse el DNI con una expresi\u00f3n como la siguiente:<\/p>\n<p><code>|serialNumber=(\\d{8})|<\/code><\/p>\n<blockquote><p>\/C=ES\/O=FNMT\/OU=FNMT Clase 2 CA\/OU=123456789\/CN=NOMBRE APELLIDO1 APELLIDO2 NOMBRE &#8211; NIF 11222333J<\/p><\/blockquote>\n<p>En este segundo certificado, expedido por la FNMT, el NIF aparece dentro de un campo CN. Para este tipo de certificado podr\u00eda extraerse el DNI con una expresi\u00f3n como la siguiente:<\/p>\n<p><code>|NIF (\\d{8})|<\/code><\/p>\n<p>Como se puede ver, ambas secuencias son completamente diferentes. En condiciones normales se podr\u00eda resolver mediante una disyunci\u00f3n, pero en este caso no esta opci\u00f3n, por las razones expuestas anteriormente, no es viable.<\/p>\n<p>La soluci\u00f3n a este problema viene dada por el uso de las clases de caracteres ([ ]). En la primera expresi\u00f3n el DNI viene precedido por la secuenca de estos cuatro caracteres: \u00abber=\u00bb, mientras que en la segunda viene precedido por estos cuatro: \u00abNIF \u00ab. Si componemos una expresi\u00f3n que busque un grupo de ocho caracteres num\u00e9ricos (en este caso s\u00f3lo 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\u00f3n como esta:<\/p>\n<p><code>|[bN][eI][rF][= ](\\d{8})| <\/code><\/p>\n<p>que es capaz de extraer el DNI del due\u00f1o del certificado en ambos casos.<\/p>\n<p>Si me dejan, otro d\u00eda contar\u00e9 en qu\u00e9 se est\u00e1 usando esto.<\/p>\n<p><strong>Editado:<\/strong> Ya se puede decir en qu\u00e9 se est\u00e1 usando esto: <a href=\"http:\/\/www.redestelecom.com\/Actualidad\/Noticias\/Infraestructuras\/Innovaci%F3n\/20071213037\">La Universidad de Huelva ya tiene acceso seguro al (sic) DNI electr\u00f3nico<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta ma\u00f1ana he conseguido realizar una configuraci\u00f3n exitosa en un<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13,25],"tags":[],"series":[],"class_list":["post-775","post","type-post","status-publish","format-standard","hentry","category-informatica","category-trabajo"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=775"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/775\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=775"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}