Hoe configureert u de Kerberos-tokengrootte met de MaxTokenSize-instelling?

Hoe los je problemen met de Kerberos-ticketgrootte en gerelateerde authenticatieproblemen op?

Het omgaan met authenticatiefouten met betrekking tot Kerberos kan frustrerend zijn, vooral wanneer gebruikers foutmeldingen krijgen als ‘Toegang geweigerd’ of vreemde berichten zoals ‘Aanvraagheader te lang’.Soms komt dit doordat het Kerberos-ticket zelf te groot is vanwege een groot aantal groepslidmaatschappen, problemen met SIDHistory of te grote tokens. Deze handleiding beschrijft hoe u de tokengrootte voor een gebruiker kunt bepalen en hoe u uw systeem kunt aanpassen om grotere tickets te verwerken indien nodig. Want Windows moet het natuurlijk weer een beetje ingewikkeld maken.

Hoe los je problemen met de Kerberos-ticketgrootte en gerelateerde authenticatieproblemen op?

Methode 1: Controleer de Kerberos-tokengrootte voor een gebruiker

Dit helpt om te begrijpen of de grootte van uw Kerberos-ticket de capaciteit van uw systeem overschrijdt, en is vooral handig als u fouten ziet in Logboeken, zoals gebeurtenis-ID 40960 of Kerberos-beveiligingsfouten. Windows heeft geen ingebouwde, eenvoudige manier om deze informatie te bekijken, maar een PowerShell-script van een GitHub-repository kan het zware werk doen. Het script schat in principe de totale grootte van uw beveiligingsgroepen, SIDHistory en de totale tokengrootte.

Download eerst het script via deze GitHub-link. Sla het op als CheckMaxTokenSize.ps1. Vervolgens moet je scripts toestaan ​​om te worden uitgevoerd, bijvoorbeeld met:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Navigeer naar de locatie waar je het script hebt opgeslagen, bijvoorbeeld, cd C:\scripts\en voer het uit met de gebruikersnaam, zoals:

.\CheckMaxTokenSize.ps1 -Principals 'yourusername' -Details $true

Het script geeft een schatting van de tokengrootte, het aantal groepen, SIDHistory-informatie en of de grootte in de buurt komt van of hoger is dan de standaardlimiet in Windows (meestal 12 KB in Windows 7 en 48 KB in Windows 8/Server 2012+).

Na het uitvoeren van de test zie je of de tokengrootte groot genoeg is om problemen te veroorzaken, vooral als deze de standaardlimieten nadert of overschrijdt. Een groot aantal geneste groepen of SIDHistory kan de grootte snel doen oplopen. Deze informatie helpt je te bepalen of het beter is om het aantal groepen te verminderen of de MaxTokenSize te verhogen.

Methode 2: Het aantal leden van gebruikersgroepen verminderen

Dit is vaak de eenvoudigste oplossing, hoewel niet altijd haalbaar. Als een gebruiker lid is van honderden groepen, vooral geneste groepen, kan dat de ticketgrootte enorm vergroten. Het is onduidelijk waarom het werkt, maar het verminderen van het aantal groepslidmaatschappen – of het verwijderen van SIDHistory, indien mogelijk – kan voorkomen dat het Kerberos-token te groot wordt. Zelfs het uitschakelen van speciale delegatieopties kan soms helpen, omdat dit de hoeveelheid informatie in het ticket vermindert.

Pro-tip: Controleer het lidmaatschap van gebruikersgroepen met:

Get-ADUser -Identity 'username' -Properties MemberOf, SIDHistory | Select-Object MemberOf, SIDHistory

Als je merkt dat het aantal groepen onbeheersbaar hoog is, overleg dan met je beheerder over het verminderen van het aantal leden of het opschonen van SIDHistory om het aantal tickets te verminderen.

Methode 3: Verhoog de registerwaarde MaxTokenSize

Dit is de oplossing als het verkleinen van groepen niet voldoende is of geen optie is. Je kunt de MaxTokenSize-instelling verhogen, bijvoorbeeld tot 64 KB, maar wees gewaarschuwd: een te hoge waarde kan gevolgen hebben voor de prestaties of de beveiliging. De standaardwaarde is 12 KB in oudere Windows-versies en is verhoogd tot 48 KB in nieuwere versies. Om deze waarde te verhogen, moet je het register bewerken.

  1. Open de register-editor ( regedit ).
  2. Navigeer naar HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
  3. Maak een nieuwe DWORD-waarde (32-bits) met de naam MaxTokenSize.
  4. Stel de waarde (decimaal) in op bijvoorbeeld 48000 (voor 48 KB).Pas dit aan naar behoefte.
  5. Herstart de computer zodat de wijzigingen van kracht worden.

Om de registerwijziging te bevestigen, voert u het volgende commando uit:

Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters | Select-Object MaxTokenSize

Dit helpt Windows een grotere buffer toe te wijzen voor Kerberos-authenticatie, waardoor fouten worden verminderd, met name voor gebruikers met een groot aantal groepslidmaatschappen.

Ja, u kunt dit instellen via Groepsbeleid onder Computerconfiguratie > Beleid > Administratieve sjablonen > Systeem > Kerberos. Zoek naar de instelling “Maximale Kerberos SSPI-contexttokenbuffergrootte”.

Ga er echter niet te ver mee – Microsoft raadt aan om niet meer dan 64 KB te gebruiken. Een grotere buffer betekent immers meer geheugengebruik en mogelijk ook beveiligingsrisico’s.

Methode 4: IIS HTTP 400-fouten oplossen bij gebruik van Kerberos

Als uw website HTTP 400-fouten genereert zoals “Request header too long”, komt dat waarschijnlijk doordat de beveiligingsgroepen ervoor zorgen dat de Kerberos-tokens de limieten van IIS overschrijden. Dit gebeurt wanneer IIS probeert een enorme hoeveelheid groepsinformatie in de WWW-Authenticateheader te plaatsen.

Om dit op te lossen, moet u het register aanpassen in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters :

  • MaxFieldLength — de standaardwaarde is 16 KB. Verhoog deze geleidelijk, bijvoorbeeld tot 32000 (32 KB).
  • MaxRequestBytes — de standaardwaarde is 16 MB, maar u kunt deze verhogen om grotere headers te verwerken indien nodig, bijvoorbeeld naar 48000 bytes.

Houd er rekening mee dat het verhogen van deze waarden de serverprestaties en -beveiliging kan beïnvloeden. Voer de wijzigingen stapsgewijs door en herstart IIS vervolgens:

iisreset

Dit lost het probleem meestal op, maar bij zeer grote groepen is het beter om het aantal of de reikwijdte van groepslidmaatschappen te verminderen in plaats van alleen de kopteksten te vergroten.

Samenvatting

  • Controleer de grootte van het Kerberos-token van uw gebruiker om te zien of dat de oorzaak van het probleem is.
  • Verminder indien mogelijk het aantal overbodige groepslidmaatschappen of SIDHistory.
  • Verhoog de registerinstelling MaxTokenSize om grotere tickets toe te staan, tot maximaal 64 KB, maar wees voorzichtig.
  • Pas de IIS-headerlimieten aan als u HTTP 400-fouten krijgt bij het gebruik van Kerberos-authenticatie.

Samenvatting

Het aanpakken van de grootte van Kerberos-tickets vereist een combinatie van diagnose en aanpassingen – niet altijd even eenvoudig, maar met deze stappen kunt u vaststellen of de grootte de oorzaak is en dit probleem verhelpen. Meestal lost het verkleinen van de groepsgrootte of het vergroten van de buffer op de betreffende eindpunten het probleem op. Verwacht echter geen wonderen als uw gebruiker lid is van honderden groepen – soms is de enige echte oplossing het opschonen van groepslidmaatschappen of SIDHistory.

Hopelijk scheelt dit iemand een paar uur. Veel succes, en houd de logboeken van de gebeurtenisviewer in de gaten om te zien of de fouten afnemen na de aanpassingen.