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="data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
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?
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!
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