sql server - sirve - Hacer que IIS suplante al usuario de Windows con el servidor SQL en un entorno de intranet
quitar autenticación de windows en sql server (1)
Estoy desarrollando un sitio de intranet usando C # y ASP.NET MVC. Tengo SQL Server en una máquina e IIS ejecutándose en otra máquina. Me gustaría que un usuario visite el sitio de Intranet y, sin pedirle al usuario, el explorador de Internet envía las credenciales de usuario a IIS y éstas se pasan al servidor SQL, lo que significa que el servidor SQL puede ver al usuario acceder a la base de datos.
Soy consciente del problema del doble salto de Kerberos y es esto lo que trato de evitar. En este momento puedo hacer que IE pase las credenciales de Windows a IIS y autentique 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 está configurada 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
Configuración del conjunto de aplicaciones de IIS
Managed Pipeline = Integrated
Identity = htu/srv-htu-iis (domain service account)
Configuraciones de Active Directory
La cuenta de servicio de dominio htu / srv-htu-iis tiene un conjunto de nombre principal de servicio que asocia nuestro sitio con la cuenta.
El directorio activo tiene
Allow Delagation to any service
SQL Server se ejecuta bajo su propia cuenta de servicio de dominio SQL.
Pruebas
Ejecuté las siguientes pruebas de código:
System.Web.HttpContext.Current.User.Identity.Name
esto devuelve correctamente las credenciales de Windows del usuario que accede al sitio
System.Security.Principal.WindowsIdentity.GetCurrent().Name
devuelva la cuenta de servicio de dominio "htu / srv-htu-iis", que es con lo que se ejecuta la identidad del grupo de aplicaciones.
¿Alguien puede dar indicaciones sobre dónde podría estar yendo mal?
Bien a cualquiera que visite esta pregunta en el futuro. Resolví esto reiniciando el servicio de IIS ... ¡doh! ¡Parece que mi configuración estaba bien, solo necesito un reinicio completo del servicio!