Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kerberos kimlik doğrulaması gerektiren bir HTTP isteği, Internet Information Services(IIS) üzerinde barındırılan ve Kerberos kimlik doğrulamasını kullanacak şekilde yapılandırılan bir web sitesine gönderildiğinde, HTTP istek üst bilgisi çok uzun olabilir. Bu makale, HTTP istek üst bilgisi çok uzun olduğunda oluşan HTTP 400 hatasını geçici olarak düzeltmenize yardımcı olur.
Özgün ürün sürümü: Windows Server 2016
Özgün KB numarası: 2020943
Belirtiler
Kerberos kimlik doğrulaması gerektiren bir HTTP isteği, tarayıcıdan IIS'de barındırılan bir web sitesine gönderilir. Web sitesi, Kerberos kimlik doğrulamasını kullanacak şekilde yapılandırılmıştır. Ancak, beklenen web sayfasını almak yerine aşağıdakine benzer bir hata iletisi alırsınız:
HTTP 400 - Hatalı İstek (İstek üst bilgisi çok uzun)
Bu yanıt, Windows Uzaktan Yönetim (WinRM) içeren herhangi bir HTTP isteği tarafından oluşturulabilir.
Neden
Bu sorun, kullanıcı birçok Active Directory kullanıcı grubunun üyesiyse oluşabilir.
Sunucuya gönderilen HTTP isteği, WWW-Authenticate
üst bilgisinde Kerberos belirtecini içerir. Üst bilgi boyutu, kullanıcı gruplarının sayısıyla birlikte artar. HTTP üst bilgisi veya paket boyutu artışı sunucuda yapılandırılan sınırları aşıyorsa, sunucu isteği reddedebilir ve yanıt olarak bir hata iletisi gönderebilir.
Geçici çözüm 1: Active Directory gruplarının sayısını azaltma
Kullanıcının üyesi olduğu Active Directory gruplarının sayısını azaltın.
Geçici çözüm 2: MaxFieldLength ve MaxRequestBytes kayıt defteri girdilerini ayarlama
Kullanıcının istek üst bilgilerinin bu değerleri aşmaması için sunucudaki MaxFieldLength
ve MaxRequestBytes
kayıt defteri girdilerinin ayarlarını artırın. Uygun ayarları belirlemek için aşağıdaki hesaplamaları kullanın:
Bir kullanıcı birçok gruba ait olduğunda Kerberos kimlik doğrulamasıyla ilgili sorunlar bölümünde açıklanan formülü kullanarak kullanıcının Kerberos belirtecinin boyutunu hesaplayın.
Sunucudaki
MaxFieldLength
veMaxRequestBytes
değerlerini 4/3 * T bayt olarak ayarlayın; burada T, kullanıcının bayt cinsinden belirteç boyutudur. HTTP, base64 kodlamasını kullanarak Kerberos belirtecini kodlar.Not
Bu, belirteçteki her üç bayt değerini, base64 ile kodlanmış dört bayt ile değiştirir. Kayıt defterinde yapılan değişiklikler, siz HTTP hizmetini yeniden başlatana kadar geçerli olmaz. Ayrıca, IIS hizmetleri gibi ilgili hizmetleri de yeniden başlatmanız gerekebilir.
Uygulama ortamınıza bağlı olarak, web sitesini Kerberos yerine Windows NT LAN Manager (NTLM) kullanacak şekilde yapılandırarak da bu soruna geçici bir çözüm bulabilirsiniz. Bazı uygulama ortamlarında temsilci seçme için Kerberos kimlik doğrulamasının kullanılması gerekir. Kerberos kimlik doğrulamasının NTLM'den daha güvenli olduğunu düşünüyoruz. Güvenlik ve temsilci sonuçlarını dikkate almadan Kerberos kimlik doğrulamasını devre dışı bırakmamanızı öneririz.
Daha Fazla Bilgi
Varsayılan olarak MaxFieldLength
kayıt defteri girdisi yoktur. Bu girdi, her HTTP isteği üst bilgisinin boyut üst sınırını belirtir.
MaxRequestBytes
kayıt defteri girdisi, İstek satırının ve üst bilgilerin toplam boyutu için üst sınırı belirtir. Genellikle bu kayıt defteri girdisi, MaxRequestBytes
kayıt defteri girdisiyle birlikte yapılandırılır. Eğer MaxRequestBytes
değeri, MaxFieldLength
değerinden düşükse MaxFieldLength
değeri ayarlanır. Büyük Active Directory ortamlarında, bu iki girdinin değerleri yeterince yüksek bir değere ayarlanmadıysa kullanıcılar oturum açma hatalarıyla karşılaşabilir.
Windows Server 2016 ve sonraki MaxFieldLength
sürümlerle birlikte gelen IIS sürümleri için ve MaxRequestBytes
kayıt defteri anahtarları aşağıdaki alt anahtarda bulunur:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Anahtar değerlerini aşağıdaki tabloda gösterildiği gibi ayarlayın:
Veri Akışı Adı | Değer Türü | Değer Verisi |
---|---|---|
MaxFieldLength | DWORD | (4/3 x T bayt) + 200 |
MaxRequestBytes | DWORD | (4/3 x T bayt) + 200 |
Ayrıca, bir sonraki tabloda gösterildiği gibi kayıt defteri anahtarlarını en yüksek değerlerine ayarlayabilirsiniz. Kayıt defteri ayarlarında herhangi bir değişiklik yapmadan önce tüm olası güvenlik sonuçlarını göz önünde bulundurun.
Veri Akışı Adı | Değer Türü | Değer Verisi |
---|---|---|
MaxFieldLength | DWORD | 65536 (Onlu) veya 10000 (Onaltılık) |
MaxRequestBytes | DWORD | 16777216 (Ara) veya 1000000 (Onaltılık) |
Önemli
Bu kayıt defteri anahtarlarının değiştirilmesi son derece tehlikeli olarak değerlendirilmelidir. Bu anahtarlar IIS'ye daha büyük HTTP paketlerinin gönderilmesine izin verir. Bu da Http.sys'in daha fazla bellek kullanmasına neden olabilir. Bu nedenle, bu tür değişiklikler bilgisayarın kötü amaçlı saldırılara karşı güvenlik açığını artırabilir.
Eğer MaxFieldLength
en yüksek değeri olan 64 KB olarak ayarlanırsa, MaxTokenSize
kayıt defteri değeri 3/4 x 64 = 48 KB olarak ayarlanmalıdır.
MaxTokenSize
ayarı hakkında daha fazla bilgi için bkz. Kullanıcı birçok gruba ait olduğunda Kerberos kimlik doğrulamasıyla ilgili sorunlar.