ApplicationPoolIdentity IIS 7.5 a SQL Server 2008 R2 no funciona

11

Tengo un pequeño script de prueba ASP.NET que abre una conexión a una base de datos de SQL Server en otra máquina en el dominio. No está funcionando en todos los casos.

Preparar:

IIS 7.5 bajo W2K8R2 que intenta conectarse a una instancia remota de SQL Server 2008 R2. Todas las máquinas están en el mismo dominio.

Al usar ApplicationPoolIdentity para el sitio web, no se conecta al SQL Server con lo siguiente:

Error de inicio de sesión para el usuario 'NT AUTHORITY \ ANONYMOUS LOGON'. Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.

Detalles de la excepción: System.Data.SqlClient.SqlException: Error de inicio de sesión para el usuario 'NT AUTHORITY \ ANONYMOUS LOGON'.

Sin embargo, si cambio la Identidad del modelo de proceso a SERVICIO DE RED o mi cuenta de dominio, la conexión de la base de datos es exitosa.

He otorgado el acceso \ $ en SQL Server.

No estoy haciendo ningún tipo de autenticación en el sitio web, es solo un simple script para abrir una conexión a una base de datos para asegurarme de que funcione.

Tengo la autenticación anónima habilitada y configurada para usar la identidad del grupo de aplicaciones.

¿Cómo hago para que esto funcione? ¿Por qué la ApplicationPoolIdentity está tratando de usar el inicio de sesión anónimo? Mejor aún, ¿cómo hago para que deje de usar el inicio de sesión anónimo?

Jack
fuente
1
Siempre puede configurar la identidad de AppPool como SERVICIO DE RED.
JohnThePro

Respuestas:

4

Tuve el mismo problema también. Según esta página , se supone que ApplicationPoolIdentity tiene acceso a los recursos de red como la cuenta de la máquina (DOMINIO \ NOMBRE DE COMPUTADORA $), pero estaba usando NT AUTHORITY \ ANONYMOUS LOGON para acceder al servidor SQL.

Pude usar este hotfix para hacer que ApplicationPoolIdentity funcionara como dice el documento. Este hotfix no describe específicamente una solución para acceder a los recursos de red como NT AUTHORITY \ ANONYMOUS LOGON, pero está relacionado con el cambio de contraseña de la computadora.

Este hilo de stackoverflow me ayudó a encontrar esta solución:

Otros consejos útiles para depurar identidad ASP.NET e identidad SQL

Dado que la autenticación integrada de SQL está relacionada con la identidad del subproceso, es útil poder ver su identidad de usuario, la identidad del subproceso (que cambia según la suplantación) y el inicio de sesión del servidor SQL. Este fragmento de ASPX muestra los tres:

<%@ Import Namespace="System.Security.Principal" %>

<div>ASP.NET Request User identity: <%= User.Identity.Name %></div>
<div>Current thread/process WindowsIdentity: <%= WindowsIdentity.GetCurrent(false).Name %></div>
<asp:SqlDataSource ID="CurrentUserData" runat="server" ConnectionString="<%$ ConnectionStrings:ConnID %>"
           SelectCommand="select SYSTEM_USER" />
<asp:DetailsView DataSourceID="CurrentUserData" runat="server" />
crimbo
fuente
2

Yo tuve exactamente el mismo problema. Me arranqué el cabello durante varias horas y finalmente reinicié la máquina. ¡El problema desapareció! Tenga en cuenta que reiniciar IIS a través de iisreset NO resolvió el problema. Solo desapareció cuando reinicié el servidor.

xparrot
fuente