2011-04-09 18 views
5


¿Alguien podría ayudarme a entender el concepto de "suplantación"?Ayuda a entender la suplantación

La forma en que lo entiendo es que cuando se produce la suplantación, el código se ejecuta en nombre de alguna identidad.

Por lo tanto, para una página web, siempre que la suplantación esté deshabilitada, la página web siempre se ejecutará en su cuenta configurada.

Si está habilitado, puedo 'anular' su cuenta predeterminada y configurar la cuenta bajo la cual quiero que se ejecute la aplicación web.

Así que si estoy usando IIS7 y tengo lo siguiente:
- Un grupo de aplicaciones con identidad establecida en una cuenta personalizada 'user1'.
- Un sitio web asp.net, con su conjunto de aplicaciones configurado al anterior y con suplantación deshabilitada.
- Autenticación de Windows habilitada.

I también tienen el siguiente código:

IIdentity ii = Thread.CurrentPrincipal.Identity;
IIdentity iii = Page.Usuario.Identidad;

Si tengo acceso a la página, me piden las credenciales de Windows, presento las credenciales de 'usuario2'.

Como la suplantación está deshabilitada, esperaría que el nombre de IIdentity fuera 'user1', que no es su 'user2'.

¿Alguien puede ayudarme a entender qué está pasando? Supongo que malinterpreto por completo el concepto de "suplantación".

Gracias

Actualización 1

me encontré con este enlace después de buscar durante un tiempo: http://msdn.microsoft.com/en-us/library/aa302377.aspx

Parece que hay tres objetos IIdentity.

HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
WindowsIdentity i2 = WindowsIdentity.GetCurrent();

Desde el enlace entiendo que:

HttpContext.Current.User.Identity: Representa el usuario actual que solicita la página.

Thread.CurrentPrincipal.Identity: Identity actualmente está ejecutando el hilo. Supongo que esta identidad será aquella bajo la cual se ejecutará la solicitud web actual y sus roles asp.net definirán lo que el usuario puede y no puede hacer en la aplicación.

Supongo que la mayoría de las veces HttpContext.Current.User.Identity y Thread.CurrentPrincipal.Identity serían el mismo usuario, pero para algunos escenarios supongo que el usuario que solicita la página y el Thread.CurrentPrincipal.Identity podrían ser diferente.

Luego está: WindowsIdentity i2 = WindowsIdentity.GetCurrent();

El enlace dice: “WindowsIdentity = WindowsIdentity.GetCurrent(), que devuelve la identidad del contexto de seguridad de la que se está ejecutando el hilo de Win32.”

Después de hacer algunas pruebas que permite una desactivación 'personificación' y para mi escenario actual, me parece que esta es la identidad que se hace pasar por otra persona.

Si no me hago pasar, 'WindowsIdentity.GetCurrent();' reflejará el usuario configurado en el grupo de aplicaciones y si lo hago impersonar, la identidad cambia a la que he configurado en web.config:

<identity impersonate="true" password="**" userName="****" />

ACTUALIZACIÓN 2

Y si fijo el web.config como: <identity impersonate="true" />

WindowsIdentity.GetCurrent() se hizo pasar como el usuario que realiza la solicitud por lo que:

HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
WindowsIdentity.GetCurrent()

son el mismo usuario, el usuario que solicita la página.

Respuesta

1

Al usar la suplantación, las aplicaciones ASP.NET pueden ejecutarse opcionalmente con la identidad del cliente en cuyo nombre están operando. La razón habitual para hacer esto es evitar problemas de autenticación y autorización en el código de la aplicación ASP.NET. En su lugar, confía en IIS para autenticar al usuario y pasa un token autenticado a la aplicación ASP.NET o, si no puede autenticar al usuario, pasa un token no autenticado.

De Muy bueno el artículo ASP.NET Impersonation

+0

Gracias por la respuesta y el artículo!, .. esto es lo que me confunde ... "Cuando se utiliza la suplantación, las aplicaciones ASP.NET pueden ejecutar opcionalmente con la identidad del cliente en cuyo nombre que están operando ", entonces si no estoy usando 'suplantación' supongo que la aplicación debe continuar ejecutándose usando la cuenta configurada de sitios? (, .. en IIS7, una de las cuentas integradas o la cuenta personalizada) ... en mi caso anterior si no estoy usando suplantación, ¿por qué el nombre de identidad muestra 'user2'? Pensé que todavía debería haber sido ' user1 ', .. – rauland

+0

Si no está utilizando Suplantación de identidad; entonces no usará IIS una de las cuentas integradas o la cuenta personalizada. –

Cuestiones relacionadas