Ich habe eine ASP.NET 4.0-Anwendung, in der ich die Authentifizierung an die Datenbank weiterleiten muss. Für diese Hilfe können Sie den Webserver "app1" und den Datenbankserver "sql1" aufrufen.Kerberos Doppelsprung in ASP.NET 4.0 & SQL2008R2
Der SQL2008R2-Datenbankdienst wird als benannte Instanz "SQL2008R2" unter einem benutzerdefinierten Domänenkonto "SqlServer" ausgeführt. Auf dem Server wird Windows Server 2008 R2 Enterprise Edition ausgeführt. Ich habe einen SPN für diese erstellt ...
setspn -a MSSQLSvc/sql1.mydomain.local:SQL2008R2 SqlServer
Die ASP.NET-Anwendung wird unter einem Anwendungspool läuft eine benutzerdefinierte Domänenkonto „WebApplicationUser“ Verwendung in integrierten Pipeline-Modus. Es läuft derzeit auf meinem Laptop mit Windows 7 Enterprise, wird aber eventuell auf Windows Server 2008 R2 Standard Edition gehostet. Ich habe 2 SPN für die Anwendung erstellt (auf der Windows-7-Maschine, die ich zur Zeit aus leite) ...
setspn -a http/app1 WebApplicationUser
setspn -a http/app1.mydomain.local WebApplicationUser
In Active Directory-Benutzer und -Computer, habe ich das „WebApplicationUser“ Konto ausgewählt, und ich habe hat die eingeschränkte Delegierung auf "MSSQLSvc/sql1.mydomain.local: SQL2008R2" unter Verwendung eines beliebigen Protokolls aktiviert (ich habe auch versucht, nur Kerbero zu verwenden).
Die Anwendung wird in IIS 7.5 eingerichtet, und die Authentifizierung wird auf Anonymouse, Basic, Digest und Forms deaktiviert, während "ASP.NET Identitätswechsel" und "Windows" aktiviert werden. Die Windows-Authentifizierung hat "Erweiterter Schutz" deaktiviert und "Kernel-Modus-Authentifizierung" aktiviert. Die Anbieter sind "Negotiate" und "NTLM" in dieser Reihenfolge.
Die ASP.NET-Anwendung verwendet EF, und die Verbindungszeichenfolge so konfiguriert ist, integrierte Sicherheit zu verwenden ...
<connectionStrings>
<add name="MyContext"
connectionString="metadata=res://*/Data.MyModel.csdl|res://*/Data.MyModel.ssdl|res://*/Data.MyModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=sql1.mydomain.local\sql2008r2;Initial Catalog=MyDatabase;Persist Security Info=false;Integrated Security=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
Meine Web-Config spezifiziert sowohl die Windows-Authentifizierung und Identitätswechsel, da ich Seiten einer mit async, I auch aktiviert inpersonation Politik fließen ...
<runtime>
<alwaysFlowImpersonationPolicy enabled="true" />
</runtime>
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" />
</system.web>
Wenn ich auf lokal anmelden (auf „web1“) und auf die Anwendung sehen (mit IE), das alles funktioniert - aber dies ist nicht mit dem double-Hop, dass Ich versuche zu lösen.
Wenn ich mich an einem anderen Computer anmelde und dann mit dem IE zur Anwendung blicke oder vom lokalen Rechner mit FireFox blogge, funktioniert das nicht - Hinweis: FireFox fordert mich zur Eingabe der Anmeldedaten auf. Die Verbindung zur Datenbank scheitert mit "Anmeldung fehlgeschlagen für Benutzer 'NT AUTHORITY \ ANONYMOUS LOGON'"
Im Gegensatz zu vielen der Artikel (und hier könnte ein Teil des Problems sein), verwende ich keinen benutzerdefinierten Code zu imitieren der Benutzer. Ich bin davon überzeugt, dass der Identitätswechsel durch die obigen web.config-Einstellungen auf die gesamte Anwendung angewendet wird. Ich öffne nur die Verbindung und schließe sie wieder, wenn ich damit fertig bin.
Ich habe offensichtlich einen Schritt (oder zwei) verpasst, aber nach der ganzen Dokumentation, die ich finden kann (und es gab eine Menge), kann ich immer noch nicht finden, was dieser Schritt ist. Es hilft nicht, dass 99% der Dokumentation, die ich finden kann, tatsächlich mit IIS6 und Windows 2003 verwandt ist, aber die Prinzipien sollten gleich bleiben.
Hat es jemand geschafft, eine solche Konfiguration unter Windows 7 und/oder Windows Server 2008 zu installieren?
Kerberos-Ereignisprotokollierung im Web- und Datenbankserver aktivieren: http://support.microsoft.com/kb/262177?wa=wsignin1.0 Die Ereignisanzeige ist der Schlüssel zum Suchen und Beheben von Kerberos-Fehlern. – brian
Ich habe dies aktiviert, und auch das Netzwerkmonitor-Tool heruntergeladen, aber ich kann immer noch nicht genug Informationen sehen, um mir zu sagen, was falsch ist. Ich denke, ich lese etwas nicht richtig, da ich keinen Zweifel habe, dass die Antwort darin ist. –