2011-05-19 34 views
5

Estoy usando el siguiente código para autenticar a través de Kerberos.¿Cómo configuro .NET WindowsAuthentication? El nombre siempre aparece como "IIS APPPOOL Classic .NET AppPool" cuando quiero que use el usuario real

IntPtr logonToken = WindowsIdentity.GetCurrent().Token; 
string authenticationType = "WindowsAuthentication"; 
WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken, authenticationType); 

//windowsIdentity.Name == equals "IIS APPPOOL\Classic .NET AppPool" when I want it to be the user 

Esto solo ocurre cuando intento ejecutar mi aplicación .NET como servidor web. Si ejecuto el código localmente en mi máquina para la depuración, muestra mi ID de usuario en la propiedad Nombre. ¿Alguna sugerencia sobre cómo hacer que esto funcione en un servidor web?

Respuesta

0

Su problema es que su servidor IIS se ejecuta con su propia identidad, no la suya. Por lo tanto, WindowsIdentity.GetCurrent().Token devuelve la identidad del proceso de trabajo de IIS.

Puede configurar su sitio web para funcionar bajo diferentes identidad (incluido el suyo) usando IIS consola del Administrador: enter image description here

+0

Gracias. ¿Pero cómo lo hago para que reconozca a la persona que está golpeando el sitio? No quiero asociarlo a una sola persona, debe estar asociado a quien sea el usuario. Al menos eso es lo que mi objetivo final es. – Eric

+0

Luego debe leer el proveedor de autenticación de Windows: http://msdn.microsoft.com/en-us/library/907hb5w9.aspx Su enfoque NO es para los usuarios, 'WindowsIdentity.Currect()' se está ejecutando ** proceso ** identidad – Zruty

4

Es necesario enable impersonation in web.config:

Para configurar ASP.NET para suplantar la identidad de Windows suministrado por IIS como WindowsIdentity para la aplicación ASP.NET, edite el archivo Web.config para la aplicación y establezca el atributo de suplantación del elemento de configuración de identidad en verdadero, como se muestra en el siguiente ejemplo.

<configuration> 
    <system.web> 
    <identity impersonate="true" /> 
    </system.web> 
</configuration> 

Cuando se ejecuta el código local para la depuración es probable que estés usando el servidor web dev que se ejecuta como el usuario conectado, por lo que verá el usuario correcto en la depuración.

+0

Gracias de nuevo. ¿Hay algo más que deba cambiar en mi código o en IIS para que funcione? El usuario ahora aparece como: "NT AUTHORITY \ IUSR" – Eric

+0

Vaya, lo siento. No he hecho esto por un tiempo. Descreiré mi antiguo código de proyecto para ver si puedo detectar algo más. La página de MSDN dice que es [HttpContext.User] (http://msdn.microsoft.com/en-us/library/system.web.httpcontext.user.aspx) que cambia. – Rup

+0

Bien. Cada vez que tenga la oportunidad, será muy apreciado. ¡Gracias! – Eric

Cuestiones relacionadas