ApplicationPoolIdentity da IIS 7.5 a SQL Server 2008 R2 non funziona


11

Ho un piccolo script di test ASP.NET che apre una connessione a un database SQL Server su un'altra macchina nel dominio. Non funziona in tutti i casi.

Impostare:

IIS 7.5 in W2K8R2 tenta di connettersi a un'istanza remota di SQL Server 2008 R2. Tutte le macchine sono nello stesso dominio.

Utilizzando ApplicationPoolIdentity per il sito Web non riesce a connettersi a SQL Server con quanto segue:

Accesso non riuscito per l'utente "NT AUTHORITY \ ANONYMOUS LOGON". Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Esaminare la traccia dello stack per ulteriori informazioni sull'errore e sulla sua origine nel codice.

Dettagli eccezione: System.Data.SqlClient.SqlException: accesso non riuscito per l'utente "NT AUTHORITY \ ANONYMOUS LOGON".

Tuttavia, se cambio Identità modello di processo su SERVIZIO DI RETE o sul mio account di dominio, la connessione al database ha esito positivo.

Ho concesso l'accesso \ $ in SQL Server.

Non sto facendo alcun tipo di autenticazione sul sito web, è solo un semplice script per aprire una connessione a un database per assicurarsi che funzioni.

L'autenticazione anonima è abilitata e impostata per utilizzare l'identità del pool di applicazioni.

Come faccio a farlo funzionare? Perché ApplicationPoolIdentity sta tentando di utilizzare ANONYMOUS LOGON? Meglio ancora, come faccio a smettere di usare l'accesso anonimo?


1
È sempre possibile impostare l'identità AppPool come SERVIZIO DI RETE.
JohnThePro,

Risposte:


4

Ho avuto anche lo stesso problema. Secondo questa pagina , ApplicationPoolIdentity dovrebbe accedere alle risorse di rete come account del computer (DOMAIN \ COMPUTERNAME $), ma invece utilizzava NT AUTHORITY \ ANONYMOUS LOGON per accedere al server SQL.

Sono stato in grado di utilizzare questo aggiornamento rapido per far funzionare ApplicationPoolIdentity come il documento dice che dovrebbe. Questo aggiornamento rapido non descrive specificamente una soluzione per l'accesso alle risorse di rete come NT AUTHORITY \ ANONYMOUS LOGON, ma è correlato alla modifica della password del computer.

Questo thread stackoverflow mi ha aiutato a trovare questa soluzione:

Altri suggerimenti utili per il debug dell'identità ASP.NET e dell'identità SQL

Poiché l'autenticazione integrata SQL è correlata all'identità del thread, è utile poter visualizzare l'identità dell'utente, l'identità del thread (che cambia in base alla rappresentazione) e il login al server SQL. Questo frammento ASPX mostra tutti e tre:

<%@ 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

Ho avuto lo stesso identico problema. Mi tolsi i capelli per diverse ore e infine riavviai la macchina. Il problema è andato via! Si noti che il riavvio di IIS tramite iisreset DID NON risolve il problema. È andato via solo quando ho riavviato il server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.