Frage

Wir haben ein System, in dem sie Client-Windows-Authentifizierung integriert will. Dies ist eine ASP.NET 3.5-Anwendung, eine Verbindung zu SQL Server 2005. Der Web-Server ist Server 2003 R2 SP2. Der DB-Server ist Server 2003 SP2 (nicht R2).

In dem DB-Server, lief ich das folgende Skript

exec sp_grantlogin 'myDomain\myUserGroup'
USE myDbName
exec sp_grantdbaccess 'myDomain\myUserGroup'

Ich habe 3 Benutzer in der Windows-Benutzergruppe 'myDomain \ myUserGroup' jetzt. Alle Konten drei Benutzer für die Delegierung als vertrauenswürdig gekennzeichnet. Das Web-Server-Konto in ADs für die Delegierung vertraut markiert ist.

Die Web-Anwendung wird als Windows-Authentifizierung verwenden markiert (alle anderen ausgeschaltet). Die web.config hat die folgenden Zeilen:

<authentication mode="Windows" ></authentication>
<identity impersonate="true" />
<authorization>
    <deny users="?"/>
</authorization>

Doch wenn ich versuche, mit einem Benutzer auf die Web-Anwendung zu verbinden, die in der Benutzergruppe ist, erhalte ich die Fehlermeldung:

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

Meine Verbindungszeichenfolge aus einer Sql ConnectionStringBuilder wird als solche konstruiert gebaut:

ConnectionStringBuilder.DataSource = "MYDBSERVER"
ConnectionStringBuilder.InitialCatalog = "MYDBCATALOG"
ConnectionStringBuilder.IntegratedSecurity = True

Wenn ich hart CODE eine der zulässigen Konten auf dem web.config <identity / zum Imitieren> Linie funktioniert es. Aber wenn ich die hart codierte Rechnung tragen und versuchen, die Identität von der Client-Maschine zu übergeben. Ich erhalte den Fehler.

So scheint es, dass ich nicht über etwas richtig für das Multi-Hop-integrierte Login-Szenario konfiguriert, aber ich kann nicht herausfinden, was passiert.

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Wenn Sie mit Windows-Authentifizierung dann nicht Identitätswechsel fließt nicht über den ASP.NET-Prozess selbst. Sie haben zwei Möglichkeiten hier - Swap Basisauthentifizierung, wo Identität fließt oder, wenn Sie auf Win2003 laufen lassen oder später, können Sie Kerberos und einige Hacks zum imitieren, wenn Sie eine Verbindung herstellen

Andere Tipps

Die ASP-Maschine hat den Benutzer authentifiziert Verbindung über NTLM / Kerberos IIS. Die Authentifizierung wird durch den Domänencontroller garantiert, dass der ursprünglichen Benutzerprozess (IE) gebeten hat, ein Geheimnis zu präsentieren, die seine Identität garantiert: sein Passwort tippte er, wenn er in die Box angemeldet. Die Authentifizierung wird tatsächlich nicht durch die Prozesse getan beteiligt, sondern durch die lokale Sicherheitsautorität (LSA, aka. Lsass.exe) auf jeder Maschine beteiligt. Da die LSA auf der ASP-Maschine wissen, dass die Authentifizierung in Ordnung ist, wird es eine Personifizierung der Remote-Benutzer erlaubt, etwas zuzugreifen hat es die Rechte auf Zugang unter der Kontrolle des genannten LSA (in anderen Worten, alles, was auf der lokalen ASP-Maschine ).

Sobald der ASP-Prozess, der die Benutzer verkörpert einen anderen Hop auf eine neue Maschine macht, hat es das Reich von der LSA auf der ASP-Maschine gesteuert links. Die LSA auf der SQL-Maschine hat keinen Grund, der LSA auf der ASP-Maschine zu vertrauen. Also fragen sie es einen Nachweis zu erbringen, dass es ist, die sie behauptet, es ist (der imitierte Benutzer). Die ASP-Maschine kann leider nicht so einen Beweis vorlegen, da es nicht den Benutzer Geheimnis (das Passwort) nicht hat.

Die Arbeit um etwas ‚Delegierung‘ genannt. Durch Delegierung greift der Domänencontroller in den Verhandlungen zwischen der Maschine LSA SQL und die ASP-Maschine LSA und sagt ‚das ASP-Maschine in Ordnung ist, was ich für ihn bürgen‘. So dass die Maschine LSA Vertrauen SQL die Authentifizierung und Authentifizierung des ursprünglichen, imitierten Benutzer.

Die technischen Details, wie die eingeschränkte Delegierung einzurichten sind in How To: Verwendung Protocol Transition und Constrained Delegation in ASP.NET 2.0

Beachten Sie, dass dies wahr ist jederzeit ein ‚Double-Hop‘ und den Identitätswechsel beteiligt ist, unabhängig von der Art der beteiligten Ressourcen (kann ein SQL-Server kann ein Dateifreigabe sein, kann ein neuer Back-End-ASP-Dienst sein).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top