Autenticación con DNIe en aplicaciones ASP.NET

Con este post quiero estrenar mi nuevo blog http://luisruizpavon.com, esto no es un adios a mi blog en Geeks, ni mucho menos, haré crossposting de lo que vaya con la temática de Geeks, pero hace tiempo que tenía en la cabeza crear un blog propio y al fin lo he hecho.

Lo primero es dejar claro que todo lo que voy a contar aquí es fruto de mi propia investigación, quién se haya pegado con esto o este en este momento investigando, sabrá que la información al respecto es bastante escasa. Me gustaría que si algo de lo que digo es erroneo o hay una forma mejor de hacerlo, me deje un comentario que será muy bien recibido.

La idea es poder acceder al portal de 2 maneras diferentes:

Sin DNie: El usuario accederá al portal introduciendo su DNI y su contraseña, que fueron introducidos cuando se produjo el alta en el mismo. Con este método, los trámites que necesiten DNIe no estarán disponibles hasta que no acceda con su DNIe.

Con DNie: El usuario introducirá su DNIe en el lector, accederá al portal y este, sí previamente realizó el registro manual introduciendo todos sus datos, automaticamente será identificado.

Yo he encontrado 2 formas de hacer esto y trataré de explicar un poco por encima como funcionan:

IIS 7 + Desarrollo de componentes

Una manera de poder permitir al usuario acceder al portal con su DNIe es configurar IIS 7 para que acepte certificado de cliente (El DNIe lleva 2 certificados, el de autenticación y el de firma).

Para ello lo primero es crearnos un certificado de prueba y habilitar el SSL en nuestro sitio. Luego en la configuración SSL del sitio marcamos que acepta certificado de cliente:

imageAccedemos con el DNIe en el lector y nos pedirá que seleccionemos el certificado:

image

Uno de los problemas que me he encontrado con IIS 7, tiene que ver con la comprobación del estado de revocación del cetificado. He tratado de configurarlo tal cual explica en muchos artículo pero simpre recibo el mismo error:

403.13 (Client Certificate Revoked)

Aquí se explica detalladamente y aunque habla de IIS 6 a mí en IIS 7 introduciendo el ocsp  de la policía no me funciona:

http://tiagoe.blogspot.com/2010/01/error-40313-client-certificate-revoked.html

Esto me lleva a realizar la comprobación del estado de revocación del certificado del DNIe mediante código c#, utilizando el protocolo OCSP (Online Certificate Status Protocol) qué es un método para determinar el estado de revocación de un certificado digital, en este caso para el DNIe está en esta dirección:

http://ocsp.dnie.es/

Aqúi tenéis código de ejemplo:

https://zonatic.usatudni.es/es/aprendizaje/aprende-sobre-el-dnie/58-desarrolla-con-el-dni-electronico/226-internet-information-services-iis.html?start=2

Una vez comprobado el estado de revocación del certificado y visto que es válido, necesitamos realizar la autenticación del usuario por FBA basado en los datos del certificado de autenticación del DNIe.

Usando el API de Tractis

He encontrado por casualidad esta página https://www.tractis.com de la cual no tenía ni idea de su existencia, pero la verdad es que me alegro de haberla encontrado.

Tractis Identity nos permite integrar en nuestras aplicaciones web verificaciones de identidad y permite a tus usuarios acceder a tu sitio web con cetificados electrónicos y todo esto de manera gratuita.

Lo primero que necesitamos es crearnos una cuenta para obtener un API Key:

image

Una vez creada, iniciamos sesión:

image 

Una vez dentro, en la parte superior de la pantalla pinchamos sobre Identity

image

Vamos a crear nuestra API Key, para ello introducimos la dirección de nuestro sitio web, sí estamos en un entorno de desarrollo, para realizar pruebas, podemos añadir el nombre de nuestro sitio web al fichero hosts de nuestro sevidor y funcionará (Lo he probado), pulsamos sobre el botón Obtener API Key:image

Y ya tenemos nuestra API Key para nuestro sitio web:

image

Para probarla basta con crearte una pequeña página HTML tal cual viene en el ejemplo que ellos ponen en su página (Lectura recomendada):

https://www.tractis.com/help/?p=3537&language=es

Para probarlo con SharePoint, podemos añadir la página al directorio _layouts:

image

image

image

Y nos retorna la página que le hemos indicado con la información de la validación:

image

Por último faltaría verificar los datos que nos han enviado desde la pasarela de Tractis para verificar que alguien no se está haciendo pasar por Tractis y nos ha metido la url a pelo en el navegador (Todo esto está en el enlace que puse anteriomente) y validarlo con nuestro sistema de autenticación, en mi caso con un FBA.

 

Un saludo y espero comentarios :)

Published 15/9/2010 15:51 por Luis Ruiz Pavón
Archivado en: ,,,,
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2010/09/15/autenticaci-243-n-con-dnie-en-aplicaciones-asp-net.aspx

Comentarios

# re: Autenticación con DNIe en aplicaciones ASP.NET

Muy interesante Luis,

Entiendo que todo esto que has investigado para ASP.NET lo podemos llevar casi al 100 % a SharePoint.

Un saludo

Wednesday, September 15, 2010 4:55 PM por Juan Carlos González Martín

# re: Autenticación con DNIe en aplicaciones ASP.NET

Efectivamente, de hecho he puesto ASP.NET por ponerlo de manera genérica, aunque yo lo he implementado sobre SharePoint 2007 con FBA.

Un saludo

Wednesday, September 15, 2010 5:11 PM por Luis Ruiz Pavón

# re: Autenticación con DNIe en aplicaciones ASP.NET

¿y de manera gratuita Tractis nos asegura que la autenticación es la correcta?

No me fiaría mucho de este servicio para ponérselo a una empresa ;)

Wednesday, September 15, 2010 8:46 PM por Alberto Diaz Martin

# re: Autenticación con DNIe en aplicaciones ASP.NET

Hola Luis,

Soy Jose Luis Gordo, miembro del equipo de Tractis, y quería agradecerte la mención y el estupendo post.

Tenemos desarrollado varias librerías para php, rails, java (github.com/search) e integraciones completas como el plugin para wordpress (wordpress.org/.../tractis-identity-verifications) para facilitar la integración con nuestro servicio de validación de identidad (todos Open Source).

Quería añadir que no solo soportamos autenticación con DNIe, la lista completa de certificados soportados la podéis encontrar aquí (www.tractis.com/supported_certificates).

Saludos

Thursday, September 16, 2010 8:37 AM por Jose Luis Gordo Romero

# re: Autenticación con DNIe en aplicaciones ASP.NET

@Alberto Diaz Martin Que pasa, que por ser un servicio gratuito ya no es seguro? O es que todo lo de pago es seguro por naturaleza?

No me parece una buena reflexión por tu parte :p

Un saludo

Thursday, September 16, 2010 8:50 AM por Luis Ruiz Pavón

# re: Autenticación con DNIe en aplicaciones ASP.NET

;) no es un problema de gratis o no gratis, es que no me fíe ni de mi madre y menos cuando hablamos del DNIe y de mis certificados digitales.

Seguro que si conoces a la empresa y te transmite confianza será un buen servicio, pero ¿que garantías tengo de que se caiga el servicio? ¿puedo reclamar ante una caida del servicio y que mis usuarios no se puedan validar?

Thursday, September 16, 2010 12:51 PM por Alberto Diaz Martin

# re: Autenticación con DNIe en aplicaciones ASP.NET

Seguro que están encantados de cobrarte si necesitas un SLA. ¿Les has preguntado? ;)

Thursday, September 16, 2010 3:21 PM por Narc-o

# re: Autenticación con DNIe en aplicaciones ASP.NET

No, no les he preguntado pero si al final lo uso (que nos lo estamos planteando), no me importaría pagar por un SLA.

Monday, September 20, 2010 4:10 PM por Alberto Diaz Martin

# re: Autenticación con DNIe en aplicaciones ASP.NET

Existen otras plataformas y servicios, además de applets para realizar el login con el DNIe.

Para la firma se puede usar CAPICOM, pero sólo funcionará en IE.

La finalidad del artículo era mostrar esta plataforma, que es gratuita para que la gente haga pruebas, la decisión de que tecnología, plataforma o servicio queda en mano de cada uno :)

Un saludo

Monday, September 20, 2010 4:17 PM por Luis Ruiz Pavón

# re: Autenticación con DNIe en aplicaciones ASP.NET

Efectivamente Luis, hay otras plataformas de autenticación con el DNIe también gartuitas y pensadas para que la gente haga pruebas.

http://www.opendni.com

En este caso utilizamos como protocolo de acceso a la plataforma el protocolo OpenID.

Tuesday, September 28, 2010 5:00 PM por Miguel Angel Zabalgo

# re: Autenticación con DNIe en aplicaciones ASP.NET

Gracias Miguel, lo echaré un vistazo ;)

Monday, October 4, 2010 11:46 AM por Luis Ruiz Pavón

# re: Autenticación con DNIe en aplicaciones ASP.NET

Hola Luis, te comento mi caso. He configurado un Windows Server 2003 para requerir certificados del dnie y todo va perfecto, con mapeo incluido. Ahora quiero configurarlo en un WS2008 y solo me acepta un certificado de prueba que cree con makecert. He revisado que los certificados Raiz y Subordinados esten en sus respectivos almacenes .. y no encuentro donde esta el problema. En principio no deberia variar mucho de WS2003 a WS2008. Alguna sugerencia?

Un saludo, y gracias.

Wednesday, June 15, 2011 9:31 AM por Ruben Gomez Izquierdo

# re: Autenticación con DNIe en aplicaciones ASP.NET

I just passed!

Saturday, August 27, 2011 5:40 AM por android 3.0

# re: Autenticación con DNIe en aplicaciones ASP.NET

I just passed!

Saturday, August 27, 2011 5:41 AM por android 3.0