2009-12-24 10 views
6

Mi supervisor en la oficina me dice que vio una demostración con una versión preliminar de Microsoft "Geneva" (ahora Windows Identity Foundation) donde un desarrollador hizo lo siguiente:Uso de Windows Identity Foundation para iniciar sesión en una aplicación ASP.net

  1. Configuró un tipo de aplicación web ASP.net donde un usuario podía iniciar sesión utilizando un sistema de inicio de sesión personalizado. Detrás de escena, la aplicación web registra al usuario como un usuario en un Directorio Activo.

  2. El usuario inicia sesión en.

  3. Una vez que el usuario ha iniciado sesión, el hilo de la aplicación web ASP.net ejecuta como el usuario conectado durante la duración de la sesión del usuario y se puede acceder a los recursos de la red (tales como ejecutar consultas SQL en las tablas cuyo acceso está controlado Active Directory)

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

Queremos configurar una de nuestras aplicaciones para que funcione exactamente como se describe en 1), 2) y 3). Sin embargo, toda la documentación que he visto sobre Windows Identify Foundation trata sobre Cardspace y Federated Security. No tenemos ningún interés en usar ninguna de estas tecnologías en este momento.

Queremos ser capaces de registrar usuarios en las cuentas de Active Directory detrás de las escenas.

Sí, hemos intentado el ActiveDirectoryMembershipProvider con Forms Authentication, pero es un kludge completo para acceder realmente a los recursos en la red que requieren suplantación en cada página.

ACTUALIZACIÓN 7 de enero de 2010. Está bien, he estado trabajando en esto por un tiempo, y todo lo que he logrado presentar no llega a lo que quiero lograr. Quizás la funcionalidad que deseo no esté en la versión de lanzamiento de WIF.

Aquí es donde estoy ahora. Encontré cierta 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. link

En un ejemplo de dónde quiero utilizar el proceso que estoy buscando para diseñar, quiero realizar una consulta SQL como el usuario que ha iniciado sesión. En mi depurador, veo que configuro fácilmente los usuarios HttpContext y Thread para el usuario que ha iniciado sesión. Sin embargo, cuando me conecto al servidor SQL usando la Autenticación de Windows, siempre siempre se conecta como el usuario WindowsIdentity.GetCurrent y ese usuario siempre siempre es siempre la identidad del proceso ASP.net a menos que esté usando 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 tocando una canción de flauta mágica y la autenticación de Windows no admite iniciar sesión con canciones mágicas de flauta.

Para aclarar, no hay problema con la obtención de un WindowsIdentity que representa al usuario que inició sesión (que inició sesión con una canción de flauta mágica). El problema es que no puedo usar ese WindowsIdentity para realizar consultas SQL para mi usuario.

Respuesta

5

WIF le permite configurarlo para que una identidad basada en reclamos se corresponda con una cuenta AD, el reclamo puede ser un reclamo de identidad federado o entregado a través de una tarjeta de información. c2WTS realiza esta función.

Incluso cuando lo hace un mapa debido delegación siempre vas a tener que delegar si desea utilizar la identidad AD IIS se está haciendo pasar - eso es sólo cómo funciona, a menos que la configuración Kerberos delegation para IIS

+0

Mi supervisor es muy específico de que no quiere usar la suplantación. Además, el usuario final iniciará sesión tocando una canción en una flauta mágica. Si la canción es correcta, entonces el usuario inicia sesión mediante programación utilizando una cuenta AD. No tengo forma de evitar el hecho de que el usuario inicia sesión tocando una canción en la flauta mágica. Lo que necesito es una forma de hacer que el programa se comporte como si hubiera iniciado sesión con la Autenticación de Windows una vez que reproducen correctamente la canción de flauta mágica. –

+0

No, estás preguntando lo imposible. Autenticación de Windows utiliza suplantación, si su supervisor dice que no puede usarlo, entonces no puede imitar la Autenticación de Windows. – blowdart

+0

Gracias, blowdart. Debo corregirme a mí mismo. Lo que quise decir es que cuando usa la Autenticación de Windows con IIS, el servidor web se hace pasar por el usuario que inicia sesión. Con la Autenticación de formularios, tengo que hacer la suplantación programáticamente, lo cual deseamos evitar; el AdMembershipProvider no me ayuda con esto en absoluto, parece. No puedo suplantar con una cookie de Autenticación de formularios. Mi sup. dice que vio una demostración en la que Geneva se utilizó de alguna manera para que el usuario inicie sesión con una cuenta de AD automáticamente aunque el usuario inicie sesión con su canción de flauta mágica. –

1

Usted puede lograr el mismo uso de 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 que inició sesión no tiene los derechos necesarios para acceder a los recursos, obtendrá excepciones de seguridad que tendrá que manejar.

Cuestiones relacionadas