2013-04-25 49 views
5

IIS 7.5'te çalışan ve gerçek sunucu adından farklı bir DNS takma adı kullanılarak erişilen bir sitem var. IE 8'de, tümleşik kimlik doğrulaması başarısız oluyor, ancak Firefox ve Chrome'da her şey iyi çalışıyor. (IE, birkaç kez bir kimlik sorunu sunar, sonra bir 401.1 hata sayfası görüntüler.)IIS'deki WindowsAuthentication'dan NEGOTIATE öğesini kaldır

Bunun, NTLM üzerinden Kerberos (aka "Negotiate") kullanarak IE'den kaynaklandığını anladım ve Kerberos bir Hizmet Asistanını kaydettirmeyi gerektirir Ad (SETSPN kullanarak), DNS adı ve sunucu adı arasındaki uyumsuzluğun düzgün bir şekilde işlenmesini sağlar. Ancak, web sitemin kimliğe bürünme gerektirmesine gerek yoktur. Yetkilendirmenin yapılması yeterlidir. Yani SetSPN ile uğraşmak yerine, IIS'deki WindowsAuthentication yöntemlerinin listesinden "Pazarlık" ı kaldırmak istiyorum.

IIS'de bunun nasıl yapılacağını öğrenmek için epey bir süre aradım. Birçok appcmd komutuyla oynadım - ancak çevrimiçi örnekleri bulamıyorum ya da MSDN belgelerini okuyarak veya appcmd /? kullanarak appcmd komutlarını kullanarak tüm web sunucusuna değil, yalnızca belirli bir uygulama için belirli bir uygulamaya nasıl başvurduğumu anlayabiliyorum . İki gün boyunca birkaç arama saati ve en az 3 düzine web sayfası ziyaret edildi, yine de hala meyve vermiyor.

Bu işlem nasıl yapılır? - Bu kadar kolay olmalı!

cevap

11

Yapılandırma Düzenleyicisi'ni IIS'de açın. IIS 7.5 ile gelir veya IIS 7.0 için IIS administration pack yükleyebilirsiniz. Etkilemek istediğiniz alana gidin (sunucu, site veya uygulama) ve ardından şu simgeyi açın:

IIS Configuration Editor.

Değişim system.webServer/security/authentication/windowsAuthentication için Kısım:

IIS Configuration Editor - Windows Authentication

providers öğenin üzerine tıklayın ve sonra sağdaki Edit Items tıklayın. "Kaldır" "Negotiate" öğesini seçip tıklatın:

IIS Configuration Editor - Windows Authentication - providers

sağda Actions bölmesinde Apply iletişim kutusunu kapatın ve tıklayın.

Sorununuz çözüldü! Artık Kerberos/pazarlık yok!

Not: Ayrıca eylemlere Generate Script tıklayabilirsiniz değişikliği yapacak kodunu görüntülemek için bölmesinde ya C#, JavaScript veya komut satırından Appcmd ile.

Burada, Yapılandırma Düzenleyicisi'ni kullanmadan işi yapmak için appcmd bildirimi verilmiştir.

appcmd.exe set config "Virtual/path/to/application" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost