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


11

Eu tenho um pequeno script de teste do 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 no 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:

Falha no logon para o usuário 'NT AUTHORITY \ ANONYMOUS LOGON'. Descrição: ocorreu uma exceção não tratada durante a execução da solicitação da web atual. Revise o rastreamento de pilha para obter mais informações sobre o erro e onde ele se originou no código.

Detalhes da exceção: System.Data.SqlClient.SqlException: falha no logon para o usuário 'NT AUTHORITY \ ANONYMOUS LOGON'.

No entanto, se eu alternar a Identidade do modelo de processo para NETWORK SERVICE ou minha conta de domínio, a conexão com o banco de dados será bem-sucedida.

Eu concedi o acesso \ $ no SQL Server.

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 ativada e configurada para usar a identidade do pool de aplicativos.

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


1
Você sempre pode definir a identidade do AppPool como SERVIÇO DE REDE.
JohnThePro

Respostas:


4

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

Consegui usar esse hotfix para obter ApplicationPoolIdentity funcionando 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 da senha do computador.

Esse encadeamento stackoverflow me ajudou a encontrar esta 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 do encadeamento (que muda dependendo da representação) e o logon do servidor SQL. Este fragmento 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" />

2

Eu tinha exatamente o mesmo problema. Puxei meu cabelo por várias horas e finalmente reiniciei a máquina. A questão foi embora! Observe que a reinicialização do IIS via iisreset NÃO resolveu o problema. Ele só desapareceu quando reiniciei o servidor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.