Uso de Windows Identity Foundation para iniciar sesión a alguien en una aplicación ASP.NET

StackOverflow https://stackoverflow.com/questions/1958596

  •  21-09-2019
  •  | 
  •  

Pregunta

Mi supervisor en la oficina me dice que vio una demostración con una versión previa a la liberación de Microsoft "Ginebra" (ahora Windows Identity Foundation) donde un desarrollador hizo lo siguiente:

  1. Configure algún tipo de aplicación web ASP.NET donde un usuario podría iniciar sesión utilizando un sistema de inicio de sesión personalizado. Detrás de escena, la aplicación web inicia al usuario como usuario en un directorio activo.

  2. El usuario inicia sesión.

  3. Una vez que se inicia el usuario, el subproceso de aplicación web ASP.NET se ejecuta como el usuario iniciado en la sesión de la sesión del usuario y puede acceder a los recursos en la red (como ejecutar consultas SQL en tablas cuyo acceso está controlado Active Directory)

Los pasos 2) y 3) son exactamente lo mismo que usar la configuración de "autenticación de Windows integrada" en la pestaña "Seguridad del directorio" de la configuración del sitio web en IIS. El paso 1) es diferente porque estamos utilizando un sistema de inicio de sesión personalizado en lugar de la autenticación Kerberos.

Queremos configurar una de nuestras aplicaciones para operar exactamente como se describe en 1), 2) y 3). Sin embargo, toda la documentación que he visto sobre Windows Idention Foundation se trata de Space de tarjetas y seguridad federada. Tenemos cero interés en usar cualquiera de estas tecnologías en este momento.

Solo queremos poder iniciar sesión a los usuarios en cuentas de Active Directory detrás de escena.

Sí, hemos probado el ActiveDirectoryMembershipProvider con Forms Authentication, ¡pero es un Kludge completo para acceder realmente a los recursos en la red que requiere suplantación en cada página!

Actualización el 7 de enero de 2010. Está bien, he estado trabajando en esto por un tiempo, y todo lo que he logrado no alcanzará lo que quiero lograr. Quizás la funcionalidad que quiero no está en la versión de lanzamiento de WIF.

Aquí es donde estoy ahora. He encontrado alguna documentación en MSDN que indica que hay tres identidades diferentes utilizadas en ASP.NET: la identidad especificada por HttpContext.Current.User, la identidad especificada por Thread.CurrentPrincipal, y finalmente la identidad especificada por WindowsIdentity.GetCurrent. Enlace

En un ejemplo de dónde quiero usar el proceso que busco diseñar, quiero realizar una consulta SQL como usuario iniciado en sesión. En mi depurador, veo que configuré fácilmente los usuarios de httpContext and Thread en el usuario iniciado. Sin embargo, cuando me conecto al servidor SQL utilizando la autenticación de Windows, siempre siempre se conecta como el WindowsIdentity.GetCurrent El usuario y ese usuario siempre siempre es la identidad del proceso ASP.NET a menos que esté usando la autenticación de Windows con suplantación. No puedo usar la autenticación de Windows con mi aplicación porque mis usuarios deben iniciar sesión reproduciendo una canción de flauta mágica y la autenticación de Windows no tiene soporte para iniciar sesión con canciones de flauta mágica.

Para aclarar, no hay problemas para obtener un WindowsIdentity Representando al usuario registrado (que inició sesión con una canción de flauta mágica). El problema es que no puedo usar eso WindowsIdentity Para realizar consultas SQL para mi usuario.

¿Fue útil?

Solución

WIF le permite configurarlo para que un mapas de identidad basado en reclamos en una cuenta publicitaria, el reclamo puede ser un reclamo de identidad federada o entregarse a través de una tarjeta de información. C2WTS realiza esta función.

Incluso cuando se mapa debido a la delegación, siempre tendrá que delegar si desea usar la identidad de anuncios que IIS está suplantando, así es como funciona, a menos que se configure Delegación de Kerberos para iis

Otros consejos

Puede lograr lo mismo utilizando suplantación de identidad en ASP.NET. También debe habilitar la autenticación integrada de Windows para su aplicación web. Esto resolverá el propósito. Si el usuario iniciado en sesión no tiene los derechos requeridos para acceder a los recursos, obtendrá excepciones de seguridad que tendrá que manejar.

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