La autenticación del sitio no tiene nada que ver con la autenticación entre ASP y SQL. La 'autenticación de formularios' en realidad no es una forma de autenticación verdadera, es solo un rol y membresía para la aplicación ASP.Net, sin relación con la infraestructura de seguridad.
Cuando ejecuta su sitio desde Visual Studio está iniciando el servidor web Visual Studio con su propia cuenta, y este servidor web se autenticará en SQL Server usando NTLM/Kerberos como usted, ya que se ejecuta con sus credenciales.
Cuando visita el sitio desde el navegador, su sitio se ejecuta desde el grupo de aplicaciones IIS con la identidad de dicho grupo de aplicaciones, que generalmente es un usuario local llamado IUSER _... Este usuario local, cuando se autentica con SQL El servidor que utiliza NTLM/Kerberos se autenticará como el usuario anónimo, ya que la cuenta local no tiene ningún significado en la máquina/dominio remoto que aloja el servidor SQL.
La solución es cambiar la identidad del grupo de aplicaciones a un usuario que puede autenticarse bien con SQL Server. Para esto, la máquina de hospedaje de IIS debe estar unida al mismo dominio que la máquina de host de SQL Server (o un dominio que confía en el dominio de máquina de host de SQL Server) y la identidad de la agrupación de aplicaciones debe cambiarse a una cuenta de este dominio. Así que si el equipo de SQL Server se ejecuta en un equipo unido al dominio FOO, entonces:
- asegúrese de que la máquina de IIS se unió a Foo
- crear un usuario de dominio FOO \ MyWebApp
- cambio del grupo de aplicaciones la identidad de Foo \ MyWebApp
- agregar un inicio de sesión de SQL para FOO \ MyWebApp
- conceder el permiso necesario en SQL a FOO \ MyWebApp
la alternativa de utilizar SQL Autenticación es malo por varias razones (posibilidad de exponer la contraseña en la web.config, posibilidad de exponer la contraseña durante la autenticación en el cable). Si la máquina de hospedaje de IIS no está unida al dominio, entonces puede usar cuentas duplicadas (cuentas locales con el mismo nombre y contraseña tanto en host IIS como en SQL) pero también tiene fallas: no puede funcionar con Kerberos, la contraseña de la cuenta para mantenerse sincronizado en los dos hosts, etc.
¿qué ** versión ** de SQL Server? 2000, 2005, 2008? –
Sql server 2005 – Brij