Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, die Probleme der Kerberos-Authentifizierungsfehler zu lösen, wenn ein Benutzer zu vielen Gruppen gehört.
Ursprüngliche KB-Nummer: 327825
Symptome
Ein Benutzer, der zu einer großen Anzahl von Sicherheitsgruppen gehört, hat Probleme bei der Authentifizierung. Beim Authentifizieren wird dem Benutzer möglicherweise eine Meldung wie HTTP 400 – Ungültige Anforderung (Anforderungsheader zu lang) angezeigt. Der Benutzer hat außerdem Probleme beim Zugriff auf Ressourcen, und die Gruppenrichtlinieneinstellungen des Benutzers werden möglicherweise nicht ordnungsgemäß aktualisiert.
Weitere Informationen zum Kontext des Fehlers finden Sie unter HTTP 400 Bad Request (Request Header too long) Antworten auf HTTP-Anforderungen.
Notiz
Unter ähnlichen Bedingungen funktioniert die Windows NTLM-Authentifizierung erwartungsgemäß. Möglicherweise wird das Kerberos-Authentifizierungsproblem nicht angezeigt, es sei denn, Sie analysieren das Windows-Verhalten. In solchen Szenarien ist Windows jedoch möglicherweise nicht in der Lage, Gruppenrichtlinieneinstellungen zu aktualisieren.
Dieses Verhalten tritt in einer der derzeit unterstützten Windows-Versionen auf. Informationen zu den derzeit unterstützten Versionen von Windows finden Sie im Informationsblatt zum Lebenszyklus von Windows.
Ursache
Der Benutzer kann sich nicht authentifizieren, da das Ticket, das Kerberos erstellt, um den Benutzer darzustellen, nicht groß genug ist, um alle Gruppenmitgliedschaften des Benutzers zu enthalten.
Als Teil des Authentifizierungsdiensts Exchange erstellt Windows ein Token, das den Benutzer für die Autorisierung darstellt. Dieses Token (auch als Autorisierungskontext bezeichnet) enthält die Sicherheits-IDs (SID) des Benutzers und die SIDs aller Gruppen, zu denen der Benutzer gehört. Sie enthält auch alle SIDs, die im Attribut des Benutzerkontos sIDHistory
gespeichert sind. Kerberos speichert dieses Token in der PAC-Datenstruktur (Privilege Attribute Certificate) im Kerberos Ticket-Getting Ticket (TGT). Ab Windows Server 2012 speichert Kerberos auch das Token in der Active Directory-Anspruchsinformationen -Datenstruktur (Dynamic Access Control) im Kerberos-Ticket. Wenn der Benutzer Mitglied einer großen Anzahl von Gruppen ist und viele Ansprüche für den Benutzer oder das verwendete Gerät vorhanden sind, können diese Felder viele Leerzeichen im Ticket belegen.
Das Token hat eine feste maximale Größe (MaxTokenSize
). Transportprotokolle wie Remoteprozeduraufruf (RPC) und HTTP basieren auf dem MaxTokenSize
Wert, wenn sie Puffer für Authentifizierungsvorgänge zuordnen. MaxTokenSize
hat den folgenden Standardwert, abhängig von der Version von Windows, die das Token erstellt:
- Windows Server 2008 R2 und frühere Versionen sowie Windows 7 und frühere Versionen: 12.000 Bytes
- Windows Server 2012 und höhere Versionen sowie Windows 8 und höher: 48.000 Bytes
Wenn der Benutzer zu mehr als 120 universellen Gruppen gehört, erstellt der Standardwert MaxTokenSize
keinen großen Puffer, um die Informationen zu enthalten. Der Benutzer kann sich nicht authentifizieren und erhält möglicherweise eine Abwesenheitsnachricht . Darüber hinaus kann Windows möglicherweise keine Gruppenrichtlinieneinstellungen für den Benutzer anwenden.
Notiz
Andere Faktoren wirken sich auch auf die maximale Anzahl von Gruppen aus. Beispielsweise weisen SIDs für globale und domänenlokale Gruppen kleinere Platzanforderungen auf. Windows Server 2012 und höhere Versionen fügen dem Kerberos-Ticket Anspruchsinformationen hinzu und komprimieren auch Ressourcen-SIDs. Beide Features ändern die Platzanforderungen.
Lösung
Um dieses Problem zu beheben, aktualisieren Sie die Registrierung auf jedem Computer, der am Kerberos-Authentifizierungsprozess teilnimmt, einschließlich der Clientcomputer. Es wird empfohlen, alle Windows-basierten Systeme zu aktualisieren, insbesondere, wenn sich Ihre Benutzer über mehrere Domänen oder Gesamtstrukturen anmelden müssen.
Wichtig
Wird die Registrierung falsch angepasst, können schwerwiegende Probleme auftreten. Bevor Sie sie ändern, sichern Sie die Registrierung für die Wiederherstellung, falls Probleme auftreten.
Legen Sie auf jedem dieser Computer den MaxTokenSize
Registrierungseintrag auf einen größeren Wert fest. Sie finden diesen Eintrag im HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Unterschlüssel. Die Computer müssen neu gestartet werden, nachdem Sie diese Änderung vorgenommen haben.
Weitere Informationen zum Ermitteln eines neuen Werts MaxTokenSize
finden Sie im Abschnitt "Berechnen der maximalen Tokengröße " in diesem Artikel.
Ziehen Sie beispielsweise einen Benutzer in Betracht, der eine Webanwendung verwendet, die auf einem SQL Server-Client basiert. Im Rahmen des Authentifizierungsprozesses übergibt der SQL Server-Client das Token des Benutzers an eine Back-End-SQL Server-Datenbank. In diesem Fall müssen Sie den MaxTokenSize
Registrierungseintrag auf jedem der folgenden Computer konfigurieren:
- Der Clientcomputer, auf dem Internet Explorer ausgeführt wird
- Der Webserver, auf dem IIS ausgeführt wird
- Der SQL Server-Clientcomputer
- Der SQL Server-Datenbankcomputer
In Windows Server 2012 (und höheren Versionen) kann Windows ein Ereignis (Ereignis-ID 31) protokollieren, wenn die Tokengröße einen bestimmten Schwellenwert überschreitet. Um dieses Verhalten zu aktivieren, müssen Sie die Gruppenrichtlinieneinstellung Computerkonfiguration\Administrative Vorlagen\System\KDC\Warnung für große Kerberos-Tickets konfigurieren.
Berechnen der maximalen Tokengröße
Verwenden Sie die folgende Formel, um die Größe des Tokens zu berechnen, das Windows für einen bestimmten Benutzer generiert. Diese Berechnung hilft Ihnen zu bestimmen, ob Sie sich ändern MaxTokenSize
müssen.
TokenSize = 1200 + 40d + 8s
Für Windows Server 2012 (und höhere Versionen) definiert diese Formel ihre Komponenten wie folgt:
- 1200. Der geschätzte Overheadwert für ein Kerberos-Ticket. Dieser Wert kann je nach Faktoren wie der Länge des DNS-Domänennamens und der Länge des Clientnamens variieren.
- d. Die Summe der folgenden Werte:
- Die Anzahl der Mitgliedschaften in universellen Gruppen, die sich außerhalb der Kontodomäne des Benutzers befinden.
- Die Anzahl der im Attribut des Kontos
sIDHistory
gespeicherten SIDs. Dieser Wert zählt Gruppenmitgliedschaften und Benutzer-SIDs.
- s. Die Summe der folgenden Werte:
- Die Anzahl der Mitgliedschaften in universellen Gruppen, die sich innerhalb der Kontodomäne des Benutzers befinden.
- Die Anzahl der Mitgliedschaften in domänenlokalen Gruppen.
- Die Anzahl der Mitgliedschaften in globalen Gruppen.
Windows Server 2008 R2 und frühere Versionen verwenden dieselbe Formel. Diese Versionen betrachten jedoch die Anzahl der Domänen-lokalen Gruppenmitgliedschaften als Teil des d-Werts anstelle des Werts.
Wenn Sie einen MaxTokenSize
Wert von 0x0000FFFF (64K) haben, können Sie möglicherweise ca. 1600 d-Klassen-SIDs oder ca. 8000 s-Klassen-SIDs puffern. Eine Reihe anderer Faktoren beeinflussen jedoch den Wert, für MaxTokenSize
den Sie sicher verwenden können, einschließlich der folgenden:
Wenn Sie vertrauenswürdige Konten für Delegierungskonten verwenden, benötigt jede SID doppelt so viel Speicherplatz.
Wenn Sie über mehrere Vertrauensstellungen verfügen, konfigurieren Sie die Vertrauensstellungen zum Filtern von SIDs. Diese Konfiguration reduziert die Auswirkungen der Kerberos-Ticketgröße.
Wenn Sie Windows Server 2012 oder eine höhere Version verwenden, wirken sich die folgenden Faktoren auch auf die ANFORDERUNGEN an den SID-Speicherplatz aus:
- Es gibt ein neues Schema zum Komprimieren der SIDs im PAC. Weitere Informationen finden Sie unter KDC-Ressourcen-SID-Komprimierung. Dieses Feature reduziert die größe, die für SIDs im Ticket erforderlich ist.
- Die dynamische Zugriffssteuerung fügt dem Ticket Active Directory-Ansprüche hinzu, wodurch die Größenanforderungen erhöht werden. Nach der Bereitstellung von Ansprüchen mit Windows Server 2012-Dateiservern können Sie jedoch davon ausgehen, dass eine erhebliche Anzahl von Gruppen, die den Dateizugriff steuern, auslaufen. Diese Reduzierung kann wiederum die erforderliche Größe im Ticket reduzieren. Weitere Informationen finden Sie unter Dynamic Access Control: Scenario Overview.
Wenn Sie Kerberos für die Verwendung nicht eingeschränkter Delegierung konfiguriert haben, müssen Sie den
TokenSize
Wert aus der Formel verdoppeln, um eine gültige Schätzung vonMaxTokenSize
.Wichtig
Im Jahr 2019 hat Microsoft Updates für Windows ausgeliefert, die die Standardkonfiguration der nicht eingeschränkten Delegierung für Kerberos deaktiviert haben. Weitere Informationen finden Sie unter Updates für die TGT-Delegierung über eingehende Vertrauensstellungen in Windows Server.
Da die Ressourcen-SID-Komprimierung weit verbreitet ist und die nicht eingeschränkte Delegierung veraltet ist,
MaxTokenSize
sollte 48000 oder größer für alle Szenarien ausreichend sein.
Bekannte Probleme, die Sich auf MaxTokenSize auswirken
Für die meisten Implementierungen sollte ein MaxTokenSize
Wert von 48.000 Bytes ausreichen. Dies ist der Standardwert in Windows Server 2012 und höheren Versionen. Wenn Sie jedoch einen größeren Wert verwenden möchten, überprüfen Sie die bekannten Probleme in diesem Abschnitt.
Größenbeschränkung von 1.010 Gruppen-SIDs für das LSA-Zugriffstoken
Dieses Problem ist ähnlich, da ein Benutzer, der zu viele Gruppenmitgliedschaften hat, nicht authentifiziert werden kann, aber die Berechnungen und Bedingungen, die das Problem steuern, unterscheiden sich. Der Benutzer kann dieses Problem beispielsweise bei Verwendung der Kerberos-Authentifizierung oder der Windows NTLM-Authentifizierung feststellen. Weitere Informationen finden Sie unter Anmelden bei einem Benutzerkonto, das Mitglied von mehr als 1.010 Gruppen ist, auf einem Windows Server-basierten Computer möglicherweise fehl.
Bekanntes Problem beim Verwenden von Werten von MaxTokenSize größer als 48.000
Um einen Denial-of-Service-Angriffsvektor zu mindern, verwendet Internetinformationsserver (IIS) eine eingeschränkte HTTP-Anforderungspuffergröße von 64 KB. Ein Kerberos-Ticket, das Teil einer HTTP-Anforderung ist, wird als Base64 codiert (6 Bit erweitert auf 8 Bit). Daher verwendet das Kerberos-Ticket 133 Prozent seiner Originalgröße. Wenn die maximale Puffergröße in IIS 64 KB beträgt, kann das Kerberos-Ticket daher 48.000 Bytes verwenden.
Wenn Sie den Registrierungseintrag auf einen Wert festlegen, der
MaxTokenSize
größer als 48000 Bytes ist und der Pufferspeicher für SIDs verwendet wird, kann ein IIS-Fehler auftreten. Wenn Sie denMaxTokenSize
Registrierungseintrag jedoch auf 48.000 Bytes festlegen und den Speicherplatz für SIDs und Ansprüche verwenden, tritt ein Kerberos-Fehler auf.Weitere Informationen zu IIS-Puffergrößen finden Sie unter Einschränken der Headergröße der HTTP-Übertragung, die IIS von einem Client in Windows 2000 akzeptiert.
Bekannte Probleme bei verwendung von MaxTokenSize größer als 65.535
In früheren Versionen dieses Artikels wurden Werte von bis zu 100.000 Bytes für
MaxTokenSize
. Wir haben jedoch festgestellt, dass Versionen von SMS-Administrator Probleme haben, wenn dieMaxTokenSize
Größe 100.000 Bytes oder größer ist.Wir haben auch festgestellt, dass das IPSEC IKE-Protokoll nicht zulässt, dass ein Sicherheits-BLOB größer als 66.536 Bytes wird, und es würde auch fehlschlagen, wenn
MaxTokenSize
auf einen größeren Wert festgelegt wird.