Hoe configureert u Kerberos-authenticatie voor een IIS-website?

Het instellen van Kerberos-authenticatie voor IIS is niet zo eenvoudig als je zou hopen, vooral niet als je een webfarm beheert of gewoon van die vervelende prompt af wilt die steeds om een ​​gebruikersnaam en wachtwoord vraagt. Dit hele proces omvat behoorlijk wat stappen: IIS configureren, Service Principal Names (SPN’s) aanmaken, machtigingen instellen en toepassingspools aanpassen. Het is de eerste keer best lastig, maar als alles eenmaal goed staat, kan het de inlogervaring voor gebruikers aanzienlijk verbeteren. Je hoeft dan niet meer terug te vallen op NTLM of anonieme toegang, tenzij je dat wilt. Bovendien kan het oplossen van problemen met die Kerberos-tickets een flinke hoofdpijn opleveren als er iets mis is, dus het is erg belangrijk om alles van tevoren correct te configureren. Om te controleren of het werkt, zijn tools zoals Fiddler erg handig. Hiermee kun je de aanvraagheaders bekijken en zien of Kerberos wordt gebruikt (zoek naar de “Authorization Header (Negotiate)” die een ticket bevat).Dus, als je genoeg hebt van de wachtwoordprompts of de onbetrouwbare authenticatie, volg dan deze stappen, en hopelijk doet Kerberos dan eindelijk wat het moet doen.

Hoe Kerberos-authenticatie in IIS voor webfarms te herstellen

IIS-verificatie-instellingen configureren

  • Open IIS Manager ( inetmgr.exe ), selecteer uw website en ga vervolgens naar het gedeelte ‘Authenticatie’.
  • Standaard is anonieme authenticatie ingeschakeld. Schakel dit uit en activeer Windows-authenticatie. IIS probeert altijd eerst anonieme authenticatie, daarom moet u dit uitschakelen.
  • Klik op ‘Providers’ in het rechterpaneel om de lijst met authenticatieproviders te bekijken. Zorg ervoor dat Negotiate bovenaan de lijst staat, vóór NTLM. Omdat Negotiate eerst Kerberos gebruikt, moet deze prioriteit krijgen. Als NTLM bovenaan staat, wordt Kerberos niet geactiveerd.

Het aanmaken en registreren van SPN-gegevens (Service Principal Name)

  • SPN’s vormen de cruciale schakel tussen uw domein en de IIS-server. Ze geven Kerberos toestemming om tickets hier te delegeren. U moet deze instellen als uw site via een hostnaam wordt benaderd of als meerdere servers deel uitmaken van een webfarm.
  • Als het om één server gaat die alleen via de hostnaam toegankelijk is (zoals http://server-name), is de kans groot dat de SPN’s al aanwezig zijn, omdat Windows dat natuurlijk automatisch configureert.
  • Als uw URL anders is (bijvoorbeeld https://webportal.adatum.loc ) of als u load balancing gebruikt, moet u de SPN’s handmatig toevoegen.
Setspn /s HTTP/webportal adatum\iis_service Setspn /s HTTP/webportal.adatum.loc adatum\iis_service 

Dit geeft het iis_service -account in principe toestemming om zich via Kerberos te authenticeren voor die URL’s. Als u in een webfarm werkt, maak dan een speciaal AD-account aan (zoals iis_service ) en wijs SPN’s toe aan dat account. Dat is overzichtelijker en minder rommelig dan SPN’s te stapelen op serveraccounts.

Controleer de SPN-instellingen

  • Voer dit commando uit setspn /l iis_serviceom de huidige SPN’s weer te geven en te controleren of ze correct zijn ingesteld.
  • Zorg ervoor dat er geen dubbele SPN’s bestaan; anders kan Kerberos in de war raken en terugvallen op NTLM, wat het hele doel voorbijschiet. Gebruik setspn -xde scanfunctie om naar duplicaten te zoeken. Als u duplicaten aantreft, corrigeer deze dan, want Kerberos heeft een hekel aan duplicaten.

Configureer de identiteit van de toepassingsgroep.

  • In IIS Manager selecteert u de toepassingsgroep voor uw website (bijvoorbeeld DefaultAppPool of een aangepaste groep).
  • Open de geavanceerde instellingen en wijzig de identiteit van ApplicationPoolIdentity naar het domeinaccount dat u eerder hebt aangemaakt ( adatum\iis_service ).
  • Ga vervolgens naar uw site in IIS, open de configuratie-editor en navigeer naar system.webServer > security > authentication > windowsAuthentication.
  • Wijzig useAppPoolCredentials naar True. Dit geeft IIS de opdracht om het opgegeven domeinaccount te gebruiken voor het authenticeren van Kerberos-tickets in plaats van de app-poolidentiteit.

Resetten en testen

  • Voer deze opdracht uit iisresetin een opdrachtprompt met beheerdersrechten om IIS opnieuw te starten en alles opnieuw te laden.
  • Ga vervolgens naar uw website via http://webportal.adatum.loc. Bekijk het verkeer in Fiddler en als Kerberos werkt, zou u de Authorization Header (Negotiate) met een ticket moeten zien.
  • Als het systeem nog steeds terugvalt op NTLM of anonieme authenticatie, controleer dan de SPN’s, machtigingen en IIS-instellingen. Soms helpt het om de server opnieuw op te starten om de opgeslagen referenties te wissen en alles weer werkend te krijgen.

In sommige configuraties mislukken deze dingen de eerste keer, maar werken ze wel na een herstart of het wissen van de cache. Zorg er ook voor dat uw clientbrowser is geconfigureerd om Kerberos-tickets door te geven. Soms hebben browsers zoals Chrome speciale vlaggen of aanpassingen in het groepsbeleid nodig om dit probleemloos te doen. Houd ook de gebeurtenislogboeken in de gaten ( Gebeurtenisviewer > Windows-logboeken > Beveiliging ) voor mislukte Kerberos-authenticatiemeldingen. Deze geven goede aanwijzingen over wat er mis is gegaan.

Tip : Kerberos-problemen komen vaak neer op beperkte machtigingen, dubbele SPN’s of een IIS-configuratie die niet correct is ingesteld voor gebruik met het domeinaccount. Geduld en het controleren van de basisinstellingen lossen de meeste problemen op.