none
ASPNET y .NET: Cómo saber si un usuario inició sesión con certificado digital (en smartcard ) o con usuario y password

    Pregunta

  • Me gustaría saber si es posible, y cómo, una aplicación puede detectar si el usuario inició su sesión windows con certificado en smartcard o si utilizó otro mecanismo diferente (habitualmente usuario y contraseña). El sistema de autenticación que ofrecerán las aplicaciones (tanto cliente pesado como cliente web) será "windows integrado" basado en Kerberos/SpNego.

    El sistema de autorización de la aplicación que estamos construyendo utiliza este factor para controlar el acceso a los recursos.

    He estado revisando los atributos de la clase user en el directorio activo, el contenido del TOKEN de windows (Win32) y el ticket Kerberos, pero mi busqueda ha sido infructuosa.

    Cualquier ayuda es bienvenida.

    jueves, 21 de febrero de 2013 15:03

Respuestas

  • Continuando con la búsqueda he encontrado una referencia en el siguiente enlace http://stackoverflow.com/questions/10706746/verify-windows-log-in-via-smart-card (inglés). Parece que Windows, de forma nativa, no registra el mecanismo de autenticación con el que un usuario ha iniciado sesión. Se propone de dos alternativas:

    a) Utilizar "Authentication Mechanism Assurance" (http://technet.microsoft.com/en-us/library/dd378897%28v=ws.10%29).

    b) Implementar un "Credential Manager"  y usar el callback "NPLogonNotify" verificando el flag KERB_INTERACTIVE_LOGON cuando el tipo de logon es KERB_LOGON_SUBMIT_TYPE

    viernes, 22 de febrero de 2013 7:22