Aracılığıyla paylaş


HTTP isteklerine HTTP 400 Hatalı İstek (İstek Üst Bilgisi çok uzun) yanıtları

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:

  1. 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.

  2. Sunucudaki MaxFieldLength ve MaxRequestBytes 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.

Başvurular