Frage

Bitte, kann jemand bitte geben Sie eine einfache, unkomplizierte Art und Weise ASP.NET> Kerberos> SQL Server zu aktivieren?

Wir haben clientMachine> WebServer> DATABASE. Der Kunde ist darauf, dass die Website die Fenster ziehen müssen sich anmelden, und nicht aufgefordert, daher die Notwendigkeit für Kerberos und integrierte Authentifizierung. Es muss auch den Benutzer auf den DB-Server ausgeben, einen Double-Hop zu induzieren.

Unsere Domäne ist eine Windows 2003-Domäne, die so weit wie ich online sagen, bedeutet Kerberos aktiviert ist. Und auf einer Domäne verbundenen Computer, wenn angemeldet, Kerbtray zeigt mir, dass ich eine ganze Reihe von Karten haben, so ist es offenbar zu arbeiten.

Die Web- und Datenbankserver Computerkonten in AD sind beide „für die Delegierung vertraut“.
Die AD-Benutzerkonten, die auf das System zugreifen müssen beide „für die Delegierung vertraut“.
Wenn alles funktioniert, werde ich weitere Benutzer hinzufügen, denn jetzt zwei ist.

Die SQL-Server-Instanz wird unter Localsystem auf dem Datenbankserver ausgeführt wird, die sie so nahe wie ich online sagen, bedeutet das nicht mit diesen SPN Dingen in Unordnung erfordert.

Doch wenn ich versuche, mit dem der Anmeldung entweder Benutzern, erhalte ich

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

ein Double-Hop-Fehler anzeigt. Dies wird durch die Tatsache gefördert, dass in dem Anwendungsprotokoll auf dem DB-Server gibt es eine ganze Reihe von Einträgen aus „MSSQL“ sagte das Gleiche.

Ich kann es wirklich nicht glauben, wie schwer das ist ... ich meine, IIS, SQL und Windows sind alle Microsoft, können sie nicht besser sprechen ???

Also zusammenfassend, ich habe

  • a kerberos Domäne,
  • db und Web-Server sowohl für größte Delegation
  • Benutzer für Delegierungszwecke vertraut
  • Benutzer in einer AD-Gruppe
  • AD-Gruppe als Login in SQL (und Benutzer in db)
  • IIS mit Anonymous aus, integriert auf, Basic und Digest aus
  • IE mit Enable Integrated auf

War es hilfreich?

Lösung 2

Die Antwort DID schließlich liegt in der SPN.

Dieses System wurde auf der Teststelle eingerichtet, die test.ourcompany.com ist, so dass ich brauchte einen neuen SPN für diesen Verweis hinzuzufügen. Also zusätzlich zu den folgenden:

HTTP/server 
HTTP/server.ourdomain.com

Ich brauchte auch eine zusätzliche ein bis hinzu:

HTTP/test.ourcompany.com

Meine Güte, was für ein Kampf! Wenigstens ist es vorbei! :)
Vielen Dank für die Hilfe Jungs!

Andere Tipps

Laden Sie die Fehlerbehebung Kerberos Delegation . Es ist ein Lebensretter.
Auf Seite 17 finden Sie die Active Directory-Checkliste finden . Folgen Sie der Checkliste Schritt für Schritt.
Auf Seite 30 finden Sie die Client-Anwendung Checkliste finden . Überprüfen Sie die Checkliste Schritt für Schritt.
Auf Seite 35 ist die Middle Tier-Checkliste . Stellen Sie sicher, es Schritt für Schritt.
Auf Seite 48 ist die Back End-Checkliste . Stellen Sie sicher, es Schritt für Schritt.

Wenn Sie immer noch Probleme haben, enthält das Dokument eine detaillierte Liste der Tools zur Fehlerbehebung (Kerbtray, klist, ldifde usw.), detaillierte Erklärung, wie die Protokollierung und Überwachung von Authentifizierungsfehler in dem Systemereignisprotokoll, detaillierte Erklärung aller Fehler zu ermöglichen, Codes in dem Ereignisprotokoll von der Authentifizierungs-Prüfung und so weiter und so weiter.

Wenn Sie herausfinden was ist falsch, wird es viel einfacher sein, zu beheben.

Was Sie beschreiben, sollte ohne Probleme funktionieren.

Ihre Verbindungszeichenfolge sollte wie folgt aussehen:

<add name="IntegratedAuthConnectionString" connectionString=
 "Data Source=DATABASEINSTANCE;Integrated Security=True"
 providerName="System.Data.SqlClient"/>

Ihre web.config sollten auch Windows-Authentifizierung angeben

<authentication mode="Windows"/>

Erstellen Sie eine Testseite, die alles aus der Auflistung von Request.ServerVariables-Dumps und sicherzustellen, dass Sie die authentifizierte Benutzernamen und Domain sehen. Etwas nach dem Vorbild des Codes unter

foreach (string s in Request.ServerVariables)
{
    Response.Write(s + ": " + Request.ServerVariables[s] + "<br />");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top