Die Kerberos-Authentifizierung in IIS 7
Wir haben einige web-Inhalte, die das setup im virtuellen Verzeichnisse mithilfe der integrierten windows-Authentifizierung. Die virtuellen Verzeichnisse sind unter Anwendungspools, die mit einem eigenen Identität (eigener Benutzer-account). Das problem ist, dass die NTLM-Authentifizierung funktioniert jedoch die Kerberos-Authentifizierung nicht. Dies ist die gleiche Konfiguration, die funktionierte unter IIS 6, aber wir müssen die Migration auf IIS 7-und Kerberos-Authentifizierung funktioniert nicht.
Hier einige weitere Informationen zu meiner Umgebung:
Virtual Directory-Authentifizierung Einstellungen:
- Alles deaktiviert, außer für die Windows-Authentifizierung
- Enable kernel-mode authentication: aktiviert
App-Pool-Einstellungen:
- Pipeline-Managed-Modus: Classic
- Identität: Benutzerdefinierte lokale Benutzer
Web.config Einstellungen:
- authentication mode = "Windows"
- system.serviceModel/bindings/basicHttpBinding/Bindung/Sicherheit/mode = TransportCredentialOnly
- system.serviceModel/bindings/basicHttpBinding/Bindung/Sicherheit/Verkehr/clientCredentailType = Windows
- serviceHostingEnvironment/aspNetCompatibilityEnabled = " true
Virtual Directory-Berechtigungen:
- Benutzerdefinierte lokale Gruppen: Wir fügen Sie Domänen-Benutzer zu der lokalen Gruppen für den Zugang zum Dienst
OS Einstellungen:
- IIS 7
- Windows Server 2008 x64 standard SP2
Hier ist die Analyse, die ich von fiddler Vergleich von IIS 6 auf IIS 7. Kerberos-Authentifizierung ist in Ordnung, die in IIS 6 mit einer app pool mit einer benutzerdefinierten Identität.
Referenz (IIS 6) (Funktioniert):
Fiddler:
(Mit Domäne\Benutzer)
Anfrage 1 (kein auth)
No Proxy-Authorization Header is present.
No Authorization Header is present.
Antwort 1 (401) (challenge)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Anfrage 2 (Kerberos-ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Antwort 2 (401) (Kerberos Antwort)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
Anfrage 3 (Kerberos-ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Antwort 3 (401) (Kerberos Antwort)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
Anfrage 4 (Kerberos-ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Antwort 4 (200) (Kerberos Antwort)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
Und die Transaktion abgeschlossen ist und der browser zeigt die Seite an.
(IIS 7) (Funktioniert nicht):
Fiddler:
(Mit Domäne\Benutzer)
Anfrage 1 (kein auth)
No Proxy-Authorization Header is present.
No Authorization Header is present.
Antwort 1 (401) ( Verhandeln)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Anfrage 2 (Kerberos-ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Antwort 2 (401) (Verhandeln)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Beachten Sie, dass IIS 7 nicht auf die Annahme meiner Kerberos-ticket in Antwort 2. Jede Idee, warum nicht? Muss ich neu konfigurieren, ein paar Sachen in IIS 7, um die Kerberos-Authentifizierung zu arbeiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
AUFLÖSUNG
In Ordnung für mich, um IIS 7 für die Aushandlung der Authentifizierung als IIS 6 funktioniert ich musste das useAppPoolCredentials der windowsAuthentication-element meiner virtuellen Verzeichnis in der applicationHost.config-Datei auf "true". Dies erfolgt dabei entweder eines der folgenden Kommandos:
Anwenden zu einzelnen Anwendungen:
Freischalten :
Dann gelten:
HINWEIS - Das eigentlich gar nicht machen, Kerberos arbeiten. Was es tut, es ist IIS 7 Verhalten sich wie IIS 6. Was dies bedeutet ist, dass, wenn die Kerberos-Verhandlung zwischen server und client fehlschlägt, dann wird der server fällt automatisch zurück zur NTLM. Dies ist eigentlich die Sache, dass die Authentifizierung für mich arbeiten (NTLM).
Verwenden Sie den Negotiate:Kerberos-Anbieter für die Windows-Authentifizierung? Wenn es ein problem rund um Kerberos, Sie könnten in der Lage sein, um mehr details auf das problem durch ausführen Netzwerk-Monitor (oder etwas ähnliches wie WireShark) auf dem client, während er versuchte, sich zu authentifizieren. Schau dir die Nachrichten in den Internet Explorer-Prozess, und Sie können sehen, einige der Kerberos treiben.