Problemen met Kerberos-verificatie wanneer een gebruiker tot veel groepen behoort
Dit artikel helpt u bij het oplossen van problemen met Kerberos-verificatiefouten wanneer een gebruiker deel uitmaakt van veel groepen.
Oorspronkelijk KB-nummer: 327825
Symptomen
Een gebruiker die tot een groot aantal beveiligingsgroepen behoort, heeft problemen bij het verifiëren. Bij het verifiëren ziet de gebruiker mogelijk een bericht zoals HTTP 400 - Ongeldige aanvraag (aanvraagheader te lang). De gebruiker heeft ook problemen met het openen van resources en de groepsbeleidsinstellingen van de gebruiker worden mogelijk niet correct bijgewerkt.
Zie HTTP 400 Ongeldige aanvraag (aanvraagheader te lang) antwoorden op HTTP-aanvragen voor meer informatie over de context van de fout.
Notitie
Onder vergelijkbare omstandigheden werkt Windows NTLM-verificatie zoals verwacht. Mogelijk ziet u het kerberos-verificatieprobleem niet, tenzij u het Windows-gedrag analyseert. In dergelijke scenario's kan Windows mogelijk de groepsbeleidsinstellingen echter niet bijwerken.
Dit gedrag treedt op in een van de momenteel ondersteunde Windows-versies. Zie het feitenblad voor de levenscyclus van Windows voor informatie over de momenteel ondersteunde versies van Windows.
Oorzaak
De gebruiker kan niet verifiëren omdat het ticket dat Kerberos bouwt om de gebruiker te vertegenwoordigen, niet groot genoeg is om alle groepslidmaatschappen van de gebruiker te bevatten.
Als onderdeel van De Verificatieservice Exchange bouwt Windows een token dat de gebruiker vertegenwoordigt voor autorisatiedoeleinden. Dit token (ook wel een autorisatiecontext genoemd) bevat de beveiligings-id's van de gebruiker en de SID's van alle groepen waartoe de gebruiker behoort. Het bevat ook eventuele SID's die zijn opgeslagen in het kenmerk van sIDHistory
het gebruikersaccount. Kerberos slaat dit token op in de PAC-gegevensstructuur (Privilege Attribute Certificate) in de TGT (Kerberos Ticket-Getting Ticket). Vanaf Windows Server 2012 slaat Kerberos het token ook op in de gegevensstructuur van Active Directory-claims (Dynamic Access Control) in het Kerberos-ticket. Als de gebruiker lid is van een groot aantal groepen en er veel claims zijn voor de gebruiker of het apparaat dat wordt gebruikt, kunnen deze velden veel spaties in het ticket in beslag nemen.
Het token heeft een vaste maximale grootte (MaxTokenSize
). Transportprotocollen zoals remote procedure call (RPC) en HTTP zijn afhankelijk van de MaxTokenSize
waarde wanneer ze buffers toewijzen voor verificatiebewerkingen. MaxTokenSize
heeft de volgende standaardwaarde, afhankelijk van de versie van Windows waarmee het token wordt gebouwd:
- Windows Server 2008 R2 en eerdere versies, en Windows 7 en eerdere versies: 12.000 bytes
- Windows Server 2012 en latere versies, en Windows 8 en latere versies: 48.000 bytes
Als de gebruiker tot meer dan 120 universele groepen behoort, maakt de standaardwaarde MaxTokenSize
geen grote buffer om de informatie op te slaan. De gebruiker kan zich niet verifiëren en kan een bericht over onvoldoende geheugen ontvangen. Bovendien kan Windows mogelijk geen groepsbeleidsinstellingen voor de gebruiker toepassen.
Notitie
Andere factoren zijn ook van invloed op het maximum aantal groepen. Zo hebben SID's voor globale en domein-lokale groepen kleinere ruimtevereisten. Windows Server 2012 en nieuwere versies voegen claimgegevens toe aan het Kerberos-ticket en comprimeren van bron-SID's. Beide functies veranderen de ruimtevereisten.
Oplossing
U kunt dit probleem oplossen door het register bij te werken op elke computer die deelneemt aan het Kerberos-verificatieproces, inclusief de clientcomputers. Het is raadzaam om al uw Windows-systemen bij te werken, met name als uw gebruikers zich moeten aanmelden bij meerdere domeinen of forests.
Belangrijk
Als u het register onjuist bewerkt, kunnen er grote problemen optreden. Voordat u het wijzigt, maakt u een back-up van het register voor herstel, voor het geval er problemen optreden.
Stel op elk van deze computers de MaxTokenSize
registervermelding in op een grotere waarde. U vindt deze vermelding in de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
subsleutel. De computers moeten opnieuw worden opgestart nadat u deze wijziging hebt aangebracht.
Zie de sectie Berekening van de maximale tokengrootte van dit artikel voor meer informatie over het bepalen van een nieuwe waardeMaxTokenSize
.
Denk bijvoorbeeld aan een gebruiker die een webtoepassing gebruikt die afhankelijk is van een SQL Server-client. Als onderdeel van het verificatieproces geeft de SQL Server-client het token van de gebruiker door aan een back-end-SQL Server-database. In dit geval moet u de MaxTokenSize
registervermelding op elk van de volgende computers configureren:
- De clientcomputer waarop Internet Explorer wordt uitgevoerd
- De webserver waarop IIS wordt uitgevoerd
- De SQL Server-clientcomputer
- De SQL Server-databasecomputer
In Windows Server 2012 (en latere versies) kan Windows een gebeurtenis (gebeurtenis-id 31) registreren als de tokengrootte een bepaalde drempelwaarde overschrijdt. Als u dit gedrag wilt inschakelen, moet u de groepsbeleidsinstelling Computerconfiguratie\Beheersjablonen\System\KDC\Waarschuwing voor grote Kerberos-tickets configureren.
De maximale tokengrootte berekenen
Gebruik de volgende formule om de grootte van het token te berekenen dat door Windows wordt gegenereerd voor een bepaalde gebruiker. Met deze berekening kunt u bepalen of u moet wijzigen MaxTokenSize
.
TokenSize = 1200 + 40d + 8s
Voor Windows Server 2012 (en latere versies) definieert deze formule de onderdelen als volgt:
- 1200. De geschatte overheadwaarde voor een Kerberos-ticket. Deze waarde kan variëren, afhankelijk van factoren zoals de lengte van de DNS-domeinnaam en de lengte van de clientnaam.
- d. De som van de volgende waarden:
- Het aantal lidmaatschappen in universele groepen die zich buiten het accountdomein van de gebruiker bevinden.
- Het aantal SID's dat is opgeslagen in het kenmerk van
sIDHistory
het account. Met deze waarde worden groepslidmaatschappen en gebruikers-SID's geteld.
- s. De som van de volgende waarden:
- Het aantal lidmaatschappen in universele groepen die zich in het accountdomein van de gebruiker bevinden.
- Het aantal lidmaatschappen in domein-lokale groepen.
- Het aantal lidmaatschappen in globale groepen.
Windows Server 2008 R2 en eerdere versies gebruiken dezelfde formule. In deze versies wordt echter rekening gehouden met het aantal lidmaatschappen van een domein-lokale groep dat deel uitmaakt van de d-waarde in plaats van de s-waarde .
Als u een MaxTokenSize
waarde van 0x0000FFFF (64.000) hebt, kunt u mogelijk ongeveer 1600 d-klasse-SID's of ongeveer 8000 s-klasse-SID's bufferen. Een aantal andere factoren is echter van invloed op de waarde waarvoor u veilig kunt gebruiken MaxTokenSize
, waaronder de volgende:
Als u vertrouwd gebruikt voor delegatieaccounts , vereist elke SID twee keer zoveel ruimte.
Als u meerdere vertrouwensrelaties hebt, configureert u de vertrouwensrelaties om SID's te filteren. Deze configuratie vermindert de impact van de Kerberos-ticketgrootte.
Als u Windows Server 2012 of een nieuwere versie gebruikt, zijn de volgende factoren ook van invloed op de VEREISTEN voor SID-ruimte:
- Er is een nieuw schema voor het comprimeren van de SID's in het PAC. Zie KDC Resource SID-compressie voor meer informatie. Deze functie vermindert de benodigde grootte voor SID's in het ticket.
- Dynamisch toegangsbeheer voegt Active Directory-claims toe aan het ticket, waardoor de vereisten voor de grootte toenemen. Nadat u echter claims met Windows Server 2012-bestandsservers hebt geïmplementeerd, kunt u verwachten dat er een aanzienlijk aantal groepen wordt uitgefaseerd die de toegang tot bestanden beheren. Deze vermindering kan op zijn beurt de benodigde grootte in het ticket verminderen. Zie Dynamisch toegangsbeheer voor meer informatie: Scenariooverzicht.
Als u Kerberos hebt geconfigureerd voor het gebruik van niet-getrainde delegering, moet u de
TokenSize
waarde van de formule verdubbelen om een geldige schatting vanMaxTokenSize
te verkrijgen.Belangrijk
In 2019 heeft Microsoft updates verzonden naar Windows die de standaardconfiguratie van niet-getrainde delegering voor Kerberos heeft gewijzigd in uitgeschakeld. Zie Updates voor TGT-delegering voor binnenkomende vertrouwensrelaties in Windows Server voor meer informatie.
Omdat bron-SID-compressie veel wordt gebruikt en niet-getrainde delegering is afgeschaft,
MaxTokenSize
moet 48000 of groter voldoende zijn voor alle scenario's.
Bekende problemen die van invloed zijn op MaxTokenSize
Een MaxTokenSize
waarde van 48.000 bytes moet voldoende zijn voor de meeste implementaties. Dit is de standaardwaarde in Windows Server 2012 en latere versies. Als u echter besluit een grotere waarde te gebruiken, bekijkt u de bekende problemen in deze sectie.
Groottelimiet van 1010 groeps-SID's voor het LSA-toegangstoken
Dit probleem is vergelijkbaar omdat een gebruiker die te veel groepslidmaatschappen heeft, niet kan worden geverifieerd, maar de berekeningen en voorwaarden die het probleem bepalen, verschillen. De gebruiker kan dit probleem bijvoorbeeld tegenkomen bij het gebruik van Kerberos-verificatie of Windows NTLM-verificatie. Zie Logboekregistratie voor een gebruikersaccount dat lid is van meer dan 1010 groepen mogelijk mislukken op een Windows Server-computer voor meer informatie.
Bekend probleem bij het gebruik van waarden van MaxTokenSize groter dan 48.000
Voor het beperken van een Denial of Service-aanvalsvector gebruikt Internet Information Server (IIS) een beperkte HTTP-aanvraagbuffergrootte van 64 kB. Een Kerberos-ticket dat deel uitmaakt van een HTTP-aanvraag, wordt gecodeerd als Base64 (6 bits uitgevouwen tot 8 bits). Daarom gebruikt het Kerberos-ticket 133 procent van de oorspronkelijke grootte. Als de maximale buffergrootte 64 kB in IIS is, kan het Kerberos-ticket dus 48.000 bytes gebruiken.
Als u de
MaxTokenSize
registervermelding instelt op een waarde die groter is dan 48000 bytes en de bufferruimte wordt gebruikt voor SID's, kan er een IIS-fout optreden. Als u deMaxTokenSize
registervermelding echter instelt op 48.000 bytes en u de ruimte voor SID's en claims gebruikt, treedt er een Kerberos-fout op.Zie Voor meer informatie over IIS-buffergrootten de headergrootte van de HTTP-overdracht beperken die IIS accepteert van een client in Windows 2000.
Bekende problemen bij het gebruik van waarden van MaxTokenSize groter dan 65.535
In eerdere versies van dit artikel zijn waarden van maximaal 100.000 bytes voor
MaxTokenSize
besproken. We hebben echter vastgesteld dat versies van SMS Administrator problemen hebben wanneer hetMaxTokenSize
100.000 bytes of groter is.We hebben ook vastgesteld dat het IPSEC IKE-protocol niet toestaat dat een beveiligings-BLOB groter wordt dan 66.536 bytes en dat het ook mislukt wanneer
MaxTokenSize
deze is ingesteld op een hogere waarde.