Kerberos-Authentifizierung in IIS 7

8

Wir haben einige Webinhalte, die in virtuellen Verzeichnissen mithilfe der integrierten Windows-Authentifizierung eingerichtet werden. Die virtuellen Verzeichnisse werden unter Anwendungspools ausgeführt, die eine benutzerdefinierte Identität verwenden (benutzerdefiniertes Benutzerkonto). Das Problem besteht darin, dass die NTLM-Authentifizierung funktioniert, die Kerberos-Authentifizierung jedoch nicht. Dies ist dieselbe Konfiguration, die unter IIS 6 funktioniert hat, aber wir müssen zu IIS 7 migrieren und die Kerberos-Authentifizierung funktioniert nicht.

Hier finden Sie weitere Informationen zu meiner Umgebung:

Virtual Directory-Authentifizierungseinstellungen:

  • Alles außer Windows-Authentifizierung deaktiviert
  • Aktivieren Sie die Kernel-Modus-Authentifizierung: aktiviert

App-Pool-Einstellungen:

  • Verwalteter Pipeline-Modus: Klassisch
  • Identität: Benutzerdefinierter lokaler Benutzer

Web.config-Einstellungen:

  • Authentifizierungsmodus="Windows"
  • system.serviceModel / bindings / basicHttpBinding / binding / security / mode = TransportCredentialOnly
  • system.serviceModel / bindings / basicHttpBinding / binding / security / transport / clientCredentailType = Windows
  • serviceHostingEnvironment / aspNetCompatibilityEnabled = true

Virtuelle Verzeichnisberechtigungen:

  • Benutzerdefinierte lokale Gruppen: Wir fügen den lokalen Gruppen Domänenbenutzer für den Zugriff auf den Dienst
  • hinzu

Betriebssystemeinstellungen:

  • IIS 7
  • Windows Server 2008 x64-Standard-SP2

Hier ist die Analyse, die ich von Fiddler bekomme, wenn ich IIS 6 mit IIS 7 vergleiche. Die Kerberos-Authentifizierung funktioniert gut in IIS 6 mit einem App-Pool, der mit einer benutzerdefinierten Identität ausgeführt wird.

Referenz (IIS 6) (Works):

Fiddler:

(mit Domäne \ Benutzer)

Anfrage 1 (keine Berechtigung)

%Vor%

Antwort 1 (401) (Herausforderung)

%Vor%

Anfrage 2 (Kerberos-Ticket)

%Vor%

Antwort 2 (401) (Kerberos-Antwort)

%Vor%

Anfrage 3 (Kerberos-Ticket)

%Vor%

Antwort 3 (401) (Kerberos-Antwort)

%Vor%

Anfrage 4 (Kerberos-Ticket)

%Vor%

Antwort 4 (200) (Kerberos-Antwort)

%Vor%

Und die Transaktion wird abgeschlossen und der Browser zeigt die Seite an.

(IIS 7) (funktioniert nicht):

Fiddler:

(mit Domäne \ Benutzer)

Anfrage 1 (keine Berechtigung)

%Vor%

Antwort 1 (401) (verhandeln)

%Vor%

Anfrage 2 (Kerberos-Ticket)

%Vor%

Antwort 2 (401) (verhandeln)

%Vor%

Beachten Sie, dass IIS 7 mein Kerberos-Ticket nicht in Antwort 2 akzeptiert. Irgendeine Idee warum nicht? Muss ich etwas in IIS 7 neu konfigurieren, damit die Kerberos-Authentifizierung funktioniert?

    
Andy Arismendi 23.09.2010, 05:06
quelle

2 Antworten

11

AUFLÖSUNG

Damit IIS 7 die Authentifizierung als IIS 6 aushandeln kann, musste ich die "useAppPoolCredentials" des windowsAuthentication-Elements meines virtuellen Verzeichnisses in der Datei "applicationHost.config" auf "true" setzen. Dies geschieht mit einem der folgenden Befehle:

%Vor%

Um auf einzelne Anwendungen anzuwenden:

Erstes Entsperren:

%Vor%

Wenden Sie dann an:

%Vor%

HINWEIS - Kerberos funktioniert nicht. Was dies bewirkt, macht IIS 7 wie IIS 6 aus. Das bedeutet, dass der Server automatisch auf NTLM zurückgreift, wenn die Kerberos-Aushandlung zwischen dem Server und dem Client fehlschlägt. Das ist eigentlich die Sache, die die Authentifizierung für mich (NTLM) funktionierte.

    
Andy Arismendi 30.09.2010, 23:28
quelle
0

Verwenden Sie den Negotiate: Kerberos-Anbieter für die Windows-Authentifizierung? Wenn bei Kerberos ein Problem auftritt, können Sie möglicherweise weitere Details zu dem Problem erhalten, indem Sie Network Monitor (oder etwas Ähnliches wie WireShark ) auf dem Client, während er versucht, sich zu authentifizieren. Sehen Sie sich die Nachrichten im Internet Explorer-Prozess an und Sie können möglicherweise einige Kerberos-Vorgänge sehen.

    
Graham Clark 23.09.2010 07:43
quelle