ApplicationPoolIdentity IIS 7.5 für SQL Server 2008 R2 funktioniert nicht

11

Ich habe ein kleines ASP.NET-Testskript, das eine Verbindung zu einer SQL Server-Datenbank auf einem anderen Computer in der Domäne herstellt. Es funktioniert nicht in allen Fällen.

Installieren:

IIS 7.5 unter W2K8R2 versucht, eine Verbindung zu einer Remote-SQL Server 2008 R2-Instanz herzustellen. Alle Maschinen befinden sich in derselben Domäne.

Bei Verwendung von ApplicationPoolIdentity für die Website kann keine Verbindung zum SQL Server hergestellt werden:

Anmeldung für Benutzer 'NT AUTHORITY \ ANONYMOUS LOGON' fehlgeschlagen. Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stapelverfolgung, um weitere Informationen über den Fehler und dessen Ursprung im Code zu erhalten.

Ausnahmedetails: System.Data.SqlClient.SqlException: Anmeldung für Benutzer 'NT AUTHORITY \ ANONYMOUS LOGON' fehlgeschlagen.

Wenn ich jedoch die Prozessmodellidentität auf NETWORK SERVICE oder mein Domänenkonto umstelle, ist die Datenbankverbindung erfolgreich.

Ich habe den \ $ Zugriff in SQL Server gewährt.

Ich mache keine Authentifizierung auf der Website, es ist nur ein einfaches Skript, um eine Verbindung zu einer Datenbank herzustellen, um sicherzustellen, dass es funktioniert.

Ich habe die anonyme Authentifizierung aktiviert und die Verwendung der Anwendungspoolidentität festgelegt.

Wie mache ich das? Warum versucht die ApplicationPoolIdentity, ANONYMOUS LOGON zu verwenden? Besser noch, wie kann ich dafür sorgen, dass die anonyme Anmeldung nicht mehr verwendet wird?

Jack
quelle
1
Sie können die AppPool-Identität jederzeit als NETWORK SERVICE festlegen.
JohnThePro

Antworten:

4

Ich hatte auch das gleiche Problem. Gemäß dieser Seite wird der Application den Zugriff auf Netzwerkressourcen , wie das Computerkonto (Domäne \ Computer $) angenommen, aber es wurde mit NT AUTHORITY \ ANONYMOUS - Anmeldung den Zugriff auf SQL Server statt.

Ich konnte diesen Hotfix verwenden , damit ApplicationPoolIdentity so funktioniert, wie es das Dokument vorschreibt. Dieser Hotfix beschreibt keine Lösung für den Zugriff auf Netzwerkressourcen speziell als NT AUTHORITY \ ANONYMOUS LOGON, bezieht sich jedoch auf die Änderung des Computerkennworts.

Dieser Stackoverflow-Thread hat mir geholfen, diese Lösung zu finden:

Weitere nützliche Tipps zum Debuggen der ASP.NET-Identität und der SQL-Identität

Da die integrierte SQL-Authentifizierung mit der Thread-Identität zusammenhängt, ist es hilfreich, Ihre Benutzeridentität, die Thread-Identität (die sich je nach Identitätswechsel ändert) und die SQL Server-Anmeldung anzeigen zu können. Dieses ASPX-Snippet zeigt alle drei an:

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

Ich hatte genau das gleiche Problem. Ich zog mir mehrere Stunden die Haare aus und startete schließlich die Maschine neu. Das Problem ging weg! Beachten Sie, dass ein Neustart von IIS über iisreset das Problem NICHT gelöst hat. Es ging nur weg, als ich den Server neu startete.

xparrot
quelle