Die Einrichtung der Kerberos-Authentifizierung für IIS ist nicht ganz so einfach, wie man es sich wünschen würde, insbesondere beim Betrieb einer Webfarm oder wenn man einfach nur die lästige Passwortabfrage loswerden möchte. Der gesamte Prozess umfasst einige Schritte: die Konfiguration von IIS, die Erstellung von Service Principal Names (SPNs), die Festlegung von Berechtigungen und die Anpassung von Anwendungspools. Beim ersten Mal ist es etwas mühsam, aber sobald alles eingerichtet ist, wird die Anmeldung für Benutzer deutlich angenehmer. Ein Rückgriff auf NTLM oder anonymer Zugriff ist nicht mehr erforderlich, es sei denn, dies ist ausdrücklich gewünscht. Die Fehlersuche bei Kerberos-Tickets kann zudem sehr aufwendig sein, daher ist eine korrekte Konfiguration im Vorfeld äußerst hilfreich. Um die Funktionsfähigkeit zu überprüfen, sind Tools wie Fiddler äußerst nützlich. Sie ermöglichen es, die Anfrageheader einzusehen und zu prüfen, ob Kerberos verwendet wird (suchen Sie nach dem „Authorization Header (Negotiate)“, der ein Ticket enthält).Wenn Sie also die ständigen Passwortabfragen oder die unzuverlässige Authentifizierung satt haben, folgen Sie dieser Anleitung, und hoffentlich wird Kerberos dann seine Magie entfalten.
Wie man die Kerberos-Authentifizierung in IIS für Webfarmen repariert
Konfigurieren der IIS-Authentifizierungseinstellungen
- Öffnen Sie den IIS-Manager ( inetmgr.exe ), wählen Sie Ihre Website aus und gehen Sie dann zum Abschnitt Authentifizierung.
- Die anonyme Authentifizierung ist standardmäßig aktiviert. Deaktivieren Sie diese und aktivieren Sie die Windows-Authentifizierung. IIS versucht immer zuerst die anonyme Authentifizierung, weshalb Sie diese deaktivieren müssen.
- Klicken Sie im rechten Bereich auf „Anbieter“, um die Liste der Authentifizierungsanbieter anzuzeigen. Stellen Sie sicher, dass „Negotiate“ vor „NTLM“ an erster Stelle steht. Da „Negotiate“ zuerst Kerberos verwendet, muss es priorisiert werden. Steht NTLM an erster Stelle, wird Kerberos nicht aktiviert.
Erstellen und Registrieren von SPN-Einträgen (Service Principal Name)
- SPNs sind die Verbindung zwischen Ihrer Domäne und dem IIS-Server und signalisieren Kerberos, dass Tickets an diesen Server delegiert werden dürfen. Sie müssen diese konfigurieren, wenn Ihre Website über einen Hostnamen aufgerufen wird oder wenn mehrere Server eine Webfarm bilden.
- Wenn es sich um einen einzelnen Server handelt, auf den einfach über seinen Hostnamen zugegriffen wird (wie z. B.
http://server-name), dann sind die SPNs wahrscheinlich bereits vorhanden – denn Windows konfiguriert das natürlich für Sie. - Wenn Ihre URL anders lautet (z. B.https://webportal.adatum.loc ) oder Sie Load Balancing verwenden, müssen Sie SPNs manuell hinzufügen.
Setspn /s HTTP/webportal adatum\iis_service Setspn /s HTTP/webportal.adatum.loc adatum\iis_service
Dies gewährt dem iis_service -Konto die Berechtigung, sich für diese URLs per Kerberos zu authentifizieren. Wenn Sie in einer Webfarm arbeiten, erstellen Sie ein dediziertes AD-Konto (z. B.iis_service ) und weisen Sie diesem Konto SPNs zu. Das ist übersichtlicher und einfacher, als SPNs auf mehreren Serverkonten zu verteilen.
SPN-Konfiguration prüfen
- Führen Sie einen Befehl aus
setspn /l iis_service, um die aktuellen SPNs aufzulisten und zu überprüfen, ob sie korrekt eingestellt sind. - Stellen Sie sicher, dass keine doppelten SPNs vorhanden sind; andernfalls kann Kerberos verwirrt werden und auf NTLM zurückgreifen, was den Zweck völlig zunichtemacht. Verwenden Sie
setspn -xden Befehl zum Scannen nach Duplikaten. Falls Sie Duplikate finden, beheben Sie diese – denn Kerberos mag keine Duplikate.
Konfigurieren der Anwendungspoolidentität
- Wählen Sie im IIS-Manager den Anwendungspool Ihrer Website aus (z. B.DefaultAppPool oder einen benutzerdefinierten).
- Öffnen Sie die erweiterten Einstellungen und ändern Sie die Identität von ApplicationPoolIdentity in das Domänenkonto, das Sie zuvor erstellt haben ( adatum\iis_service ).
- Gehen Sie als Nächstes in IIS zu Ihrer Website, öffnen Sie den Konfigurationseditor und navigieren Sie zu system.webServer > security > authentication > windowsAuthentication.
- Ändern Sie useAppPoolCredentials auf True. Dadurch wird IIS angewiesen, das angegebene Domänenkonto anstelle der App-Pool-Identität zur Authentifizierung von Kerberos-Tickets zu verwenden.
Zurücksetzen und Testen
- Führen Sie den
iisresetBefehl in einer Eingabeaufforderung mit Administratorrechten aus, um IIS neu zu starten und alles neu zu laden. - Rufen Sie anschließend Ihre Website über http://webportal.adatum.loc auf. Beobachten Sie den Datenverkehr mit Fiddler. Wenn Kerberos funktioniert, sollte der Authorization Header (Negotiate) ein Ticket enthalten.
- Falls weiterhin NTLM oder anonyme Authentifizierung verwendet wird, überprüfen Sie die SPNs, Berechtigungen und IIS-Einstellungen. Manchmal hilft ein Neustart des Servers, zwischengespeicherte Anmeldeinformationen zu löschen und das System wieder zum Laufen zu bringen.
Bei manchen Konfigurationen schlagen diese Schritte beim ersten Mal fehl, funktionieren aber nach einem Neustart oder dem Leeren des Caches. Stellen Sie außerdem sicher, dass Ihr Client-Browser für die Weiterleitung von Kerberos-Tickets konfiguriert ist – Browser wie Chrome benötigen hierfür mitunter spezielle Einstellungen oder Anpassungen der Gruppenrichtlinien.Überprüfen Sie auch die Ereignisprotokolle ( Ereignisanzeige > Windows-Protokolle > Sicherheit ) auf Kerberos-Authentifizierungsfehler – diese geben wertvolle Hinweise auf die Fehlerursache.