Conseguir que IIS suplante al usuario de Windows en SQL server en un entorno de intranet


Estoy desarrollando un sitio de intranet usando C # y ASP.NET MVC. Tengo SQL Server en una máquina y IIS ejecutándose en una máquina separada. Me gustaría que un usuario visite el sitio de intranet y sin preguntar al usuario Internet explorer envía las credenciales de Windows de los usuarios a IIS y estas se pasan a sql server, lo que significa que sql Server puede ver al usuario que accede a la base de datos.

Soy consciente del problema del doble salto de Kerberos y es esto lo que estoy tratando de evitar. En la actualidad puedo conseguir IE para pasar las credenciales de Windows a IIS y autenticar bien. Simplemente no puedo hacer que IIS pase esas credenciales a SQL Server y en su lugar la solicitud se ejecuta actualmente bajo la identidad del grupo de aplicaciones que se establece en una cuenta de servicio de dominio "htu\srv-htu-iis".

Mi configuración es la siguiente:

Web.Config

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <deny users="?" />
    </authorization>
    <identity impersonate="true" />
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>

Cadena De Conexión

connection string=&quot;data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"

Configuración de autenticación de IIS

Anonymous Authentication = Disabled
ASP.NET Impersonation = Enabled
Forms Authentication = Disabled
Windows Authentication = Enabled

Grupo de Aplicaciones de IIS Preferencias

Managed Pipeline = Integrated
Identity = htu\srv-htu-iis (domain service account)

Configuración de Active Directory

La cuenta de servicio de dominio htu\srv-htu-iis tiene un nombre principal de servicio establecido que asocia nuestro sitio con la cuenta.

Active directory tiene

Allow Delagation to any service

SQL Server se ejecuta bajo su propia cuenta de Servicio de Dominio SQL.

Pruebas

Hice las siguientes pruebas de código:

System.Web.HttpContext.Current.User.Identity.Name

Esto devuelve correctamente las credenciales de Windows del usuario que accede sitio

System.Security.Principal.WindowsIdentity.GetCurrent().Name

Devuelve la cuenta de servicio de dominio "htu\srv-htu-iis", que es bajo la que se ejecuta la identidad del grupo de aplicaciones.

¿Puede alguien proporcionar dirección en cuanto a dónde podría estar yendo mal?

Author: KyleMit, 2014-02-20

1 answers

Bueno para cualquiera que visite esta pregunta en el futuro. Resolví esto reiniciando el servicio IIS...doh! Parece que mi configuración estaba bien solo necesita un reinicio completo del servicio!

 14
Author: oceanexplorer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-20 13:38:09