Pregunta

necesito certificados X.509 captura de usuarios de sus tarjetas y mapa a una tabla de usuario para la autenticación de formularios de ASP.NET MVC. He creado un MVC (ver 2) proyecto en VS 2008, configurado para ejecutarse como un directorio virtual en el sitio Web predeterminado en el local de IIS en Vista usando la plantilla por defecto, pero agregó RequireHttpsAttribute a la Cuenta / LogOn ActionResult. No hay otros cambios. Uso del Administrador de IIS locales, he creado un certificado autofirmado y lo aplicó, a continuación, la página cuenta / Logon.aspx a Requerir SSL y requerir certificados de cliente.

Correr en depuración, al hacer clic en el enlace 'Inicio de Sesión' de la página de bienvenida (Vista Home / Index), correctamente rutas a Cuenta / Logon.aspx mediante https, pero ninguna solicitud para el certificado. Usando dynaTrace (impresionante, http://ajax.dynatrace.com ), puedo ver que el estado de respuesta es cada vez conjunto a 403 pero de nuevo, no hay certificado del sistema.

Como una comprobación de validez, que creó un proyecto asp.net aplicación web por defecto para funcionar en un directorio virtual en el sitio Web predeterminado (igual que el proyecto de MVC arriba) en Vista y configurado la página default.aspx para requerir SSL y requerir certificados de cliente, como se hace en el proyecto MVC anteriormente. Ran, está bien funciona, consigo el certificado pronta y puedo elegir cert e introduzca el PIN de la tarjeta y leer mi X.509 del objeto Request.ClientCertificate en el código detrás.

El grupo de aplicaciones para ambos directorios virtuales se establece en Classic .NET AppPool en el modo de canalización integrada.

Ayuda?!

Actualización: Súper kludgy solución en progreso. He añadido una carpeta 'autenticación' y un archivo 'GetCert.aspx' a lo que está marcado SSL / Requerir certificados de cliente al proyecto MVC y luego agregó "routes.IgnoreRoute (" auth / {*} Pathinfo ")" para el mundial .asax. El código subyacente de la GetCert.aspx response.writes los datos que quiero de la X.509. Luego añade una llamada jquery.get en la que se pide Logon.aspx GetCert.aspx y devuelve los resultados cert sujeto como una cadena en un div en Logon.aspx. Ahora recibe el certificado pronta y obtener los resultados en mi punto de vista MVC, pero esto no puede ser la manera de hacer esto!

¿Fue útil?

Solución

Tengo una solución de trabajo mediante la autenticación de formularios y el atributo autoricen en mi clase de controlador de base de manera todas las solicitudes no autenticados van a la cuenta / Inicio de sesión. La página de inicio de sesión rutas botón Subir a una acción llamada Autorizar que está decorado con el atributo RequireHttps que desencadena correctamente el símbolo para el certificado de cliente. Una vez que el certificado se ha seleccionado las asas de acción Autorizar analizar el HttpClientCertificate para la información del usuario que quiero y haciendo una búsqueda de coincidencia en mi tabla de usuarios y escribe una cookie de autenticación. entonces tengo una HttpModule que lee la cookie para crear un principal personalizada en caso AuthenticateRequest. Todo esto funciona muy bien. Estoy abriendo otra pregunta para el siguiente problema con respecto a la configuración de 'ignorar los certificados de cliente' aquí IIS: https://stackoverflow.com/questions/4141272/iis-6-ssl-client-certificates-configuration

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top