Entegre Windows Kimlik Doğrulaması'nı IIS ile çalışmak konusunda sorun yaşayan binlerce raporun olduğunu biliyorum, ancak hepsi uygulamayan web sayfalarına veya daha önce denediğim çözümlere yol açıyor gibi görünüyor. Daha önce bunun gibi düzinelerce site dağıtmıştım, yani sunucu / konfigürasyonla ilgili tuhaf bir şey var ya da çok uzun zamandır bu konuya bakıyorum ve bariz bir şey görmüyorum.
Basitçe söylemek gerekirse, yerel makinemde her şey mükemmel çalışıyor, ancak söyleyebileceğim kadarıyla aynı yapılandırmaya sahip olan üretim sunucusunda ayrılıyor .
Yerel makinede:
- Makine, Windows 7 Ultimate, Service Pack 1, IIS 7.5 ile çalışıyor.
- Site, hem IIS hem de VS Web Geliştirme Sunucusu kullanılarak başarıyla test edilmiştir.
- IIS site config, Windows Kimlik Doğrulama dışında tüm kimlik doğrulama yöntemlerini devre dışı bıraktı.
- Yerel makine herhangi bir etki alanında değil.
- Sağlanan Tedarikçiler Müzakere ve NTLM'dir (Müzakere değil: Kerberos).
- Genişletilmiş Koruma Kapalı.
- Test edilen tüm tarayıcılar (IE, Firefox, Chrome) zorlu komut istemini gösterir ve (yerel) Windows hesabımla localhost etki alanına giriş yapmama izin verir .
- Test edilen tüm tarayıcılar ayrıca opak bir yerel IP adresi kullanarak da çalışır; bu nedenle tarayıcıların kendileri sitenin "yerel" veya "uzak" görünüp görünmediğini önemsemez.
- Şu anda oturum açan kullanıcıyı gösteren web sayfasına bir ekran satırı ekledim ve tam olarak ne beklediğimi gösterir (hangi yerel kullanıcı ile giriş yapmış olursam).
Uzak makinede:
- Sunucu, Windows Server 2008 R2, IIS 7.5 kullanıyor.
- Web sayfasını yüklemek derhal bir 401.2 hatasıyla sonuçlanır : Geçersiz doğrulama başlıkları nedeniyle bu sayfayı görme yetkiniz yok. Hiçbir meydan okuma mesajı görünmez.
- IIS site config, Windows Kimlik Doğrulama dışında tüm kimlik doğrulama yöntemlerini devre dışı bıraktı.
- Uzak makine herhangi bir etki alanında değil.
- Sağlanan Tedarikçiler Müzakere ve NTLM'dir (Müzakere değil: Kerberos).
- Genişletilmiş Koruma Kapalı.
- Uzak makinede (uzak masaüstü oturumu), aynı hata, etki alanının localhost veya harici IP adresi olmasına bakılmaksızın Internet Explorer'da görünür .
- Uzak web sitesini yerel makinemden görüntülemeye çalışırsam , hata yine de 401, ancak biraz farklı bir 401'dir. Metinle birlikte alt kod yok: Geçersiz kimlik bilgileri nedeniyle erişim reddedildi.
- Windows Kimlik IIS rolü özelliği olan yüklü.
- WindowsAuthentication modülü olan (sunucu düzeyinde) ilave edildi.
- Windows Kimlik Doğrulamasını kapatıp Temel Kimlik Doğrulamayı etkinleştirirsem de aynı hata oluşur.
- Site yapar Windows kimlik doğrulaması kapatıp Anonymous (besbelli) etkinleştirirseniz yükü.
- Microsoft Destek'teki tüm sorun giderme adımlarını zaten izledim: IIS'de HTTP 401 hatalarında sorun giderme
- Başka bir Microsoft destek sayfasında gösterilen geçici çözümü denedim (sözde NTLM'yi tek yöntem olarak zorlamak için).
Son fakat en az değil, 401.2 hataları için FREB'i açmaya çalıştım ve sonuçlar bana yararlı bir şey söylemedi, tek gördüğüm şu uyarı:
MODULE_SET_RESPONSE_ERROR_STATUS
ModülAdı IIS Web Çekirdeği
Bildirimi 2
HttpStatus 401 HttpReason
Yetkisiz
HttpSubStatus 2
ErrorCode
2147942405 ConfigExceptionInfo
Bildirimi AUTHENTICATE_REQUEST
ErrorCode Erişimi reddedildi. (0x80070005)
... bu bana zaten bildiklerimi söylüyor gibi görünüyor (bu sadece kimlik bilgilerini pazarlık etmek yerine isteği reddediyor).
İzleme, WindowsAuthentication modülünün doğru bir şekilde yüklendiğini gösteriyor; çünkü = NOTIFY_MODULE_START
ile bir satır varModuleName
WindowsAuthentication
(- [un] neyse, hiçbir ilginç hata veya uyarı burada ve diğer çeşitli ASP.NET takip olaylar).
Biri bana burada ne kaçırdığımı söyleyebilir mi?
Hızlı güncelleme:
IP'leri, URL'leri ve diğer şeyleri göstereceği için bütün bir Wireshark dökümü göndermekten biraz rahatsızlık duyuyorum, ancak Fiddler'daki localhost ve uzak sunucudan gelen HTTP yanıtlarını yan yana karşılaştırdım ve oldukça kendiliğinden görünüyor. - sorunun ne olduğu belliydi:
localhost:
HTTP / 1.1 401 Yetkisiz Önbellek Kontrolü: özel İçerik Türü: text / html; karakter kümesi = UTF-8 Sunucu: Microsoft-IIS / 7.5 WWW-Kimlik doğrulaması: Pazarlık WWW-Kimlik Doğrulama: NTLM X-Powered-By: ASP.NET Tarih: Cts, 17 Ara 2011 23:42:34 GMT İçerik Uzunluğu: 6399 Proxy Desteği: Oturuma Dayalı Kimlik Doğrulama
Uzak:
HTTP / 1.1 401 Yetkisiz İçerik Türü: metin / html Sunucu: Microsoft-IIS / 7.5 X-Powered-By: ASP.NET Tarih: Cts, 17 Ara 2011 23:43:13 GMT İçerik Uzunluğu: 1293
Önbellek kontrolü gibi görünüşte önemsiz birkaç farkın yanı sıra, ana fark, uzak sunucunun WWW-Authenticate başlıklarını istemciye geri göndermemesidir.
Bu nedenle, soruyu aşağıya daraltıyor sanırım: Windows Kimlik Doğrulaması yüklendiğinde, yüklendiğinde ve yalnızca etkin olduğunda IIS neden WWW-Kimlik Doğrulaması başlıkları göndermiyor?