ApplicationPoolIdentity IIS 7.5 para o SQL Server 2008 R2 não está funcionando

11

Eu tenho um pequeno script de teste ASP.NET que abre uma conexão com um banco de dados do SQL Server em outra máquina no domínio. Não está funcionando em todos os casos.

Configuração:

IIS 7.5 em W2K8R2 tentando se conectar a uma instância remota do SQL Server 2008 R2. Todas as máquinas estão no mesmo domínio.

Usando o ApplicationPoolIdentity para o site, ele não consegue se conectar ao SQL Server com o seguinte:

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

No entanto, se eu mudar a Identidade do Modelo de Processo para SERVIÇO DE REDE ou minha conta de domínio, a conexão com o banco de dados será bem-sucedida.

Eu concedi o acesso \ $ no SQL Server.

Eu não estou fazendo nenhum tipo de autenticação no site, é apenas um script simples para abrir uma conexão com um banco de dados para garantir que ele funcione.

Eu tenho a autenticação anônima habilitada e definida para usar a identidade do pool de aplicativos.

Como faço isso funcionar? Por que o ApplicationPoolIdentity está tentando usar LOGON ANÔNIMO? Melhor ainda, como faço para parar de usar o logon anônimo?

    
por Jack 30.12.2010 / 22:24

2 respostas

4

Eu também tive o mesmo problema. De acordo com esta página , a ApplicationPoolIdentity deve acessar recursos de rede como a conta da máquina (DOMAIN \ COMPUTERNAME $), mas estava usando NT AUTHORITY \ ANONYMOUS LOGON para acessar o SQL Server.

Consegui usar esta correcção para que o ApplicationPoolIdentity funcionasse como o documento diz que deveria. Esse hotfix não descreve especificamente uma solução para acessar recursos de rede como NT AUTHORITY \ ANONYMOUS LOGON, mas está relacionado à alteração de senha do computador.

Este thread stackoverflow ajudou-me a encontrar este solução:

Outras dicas úteis para depurar a identidade do ASP.NET e a identidade do SQL

Como a autenticação integrada do SQL está relacionada à identidade do encadeamento, é útil poder exibir sua identidade de usuário, identidade de encadeamento (que muda dependendo da representação) e o logon do servidor SQL. Este snippet ASPX exibe todos os três:

<%@ 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" />
    
por 29.06.2012 / 20:25
2

Eu tive exatamente o mesmo problema. Eu puxei meu cabelo por várias horas e finalmente reiniciei a máquina. A questão foi embora! Observe que reiniciar o IIS via iisreset NÃO resolveu o problema. Só desapareceu quando reiniciei o servidor.

    
por 04.02.2011 / 17:19