2013-04-25 14 views
5

Mam witrynę działającą w IIS 7.5, do której można uzyskać dostęp za pomocą aliasu DNS innego niż nazwa serwera. W IE 8 zintegrowane uwierzytelnianie się nie udaje, ale w Firefoksie i Chrome wszystko działa dobrze. (IE kilka razy przedstawia wyzwanie uwierzytelnienia, a następnie wyświetla stronę błędu 401.1).Usuń NEGOTIATE z WindowsAuthentication w IIS

Wyliczyłem, że jest to spowodowane używaniem protokołu IE przy użyciu protokołu Kerberos (znanego też jako "Negocjowanie"), a Kerberos wymaga zarejestrowania głównego usługodawcy Nazwa (przy użyciu SETSPN), tak aby nieprawidłowe dopasowanie między nazwą DNS a nazwą serwera było poprawnie obsługiwane.

Moja strona internetowa nie wymaga jednak podszywania się - wystarczy mieć delegację. Zamiast więc zmierzyć się z SetSPN, chciałbym usunąć "Negotiate" z listy metod WindowsAuthentication w IIS.

Szukałem sporo czasu, aby dowiedzieć się, jak to zrobić w IIS. Grałem z wieloma komendami appcmd - ale po prostu nie mogę znaleźć przykładów online lub dowiedzieć się, jak czytając dokumentację MSDN lub używając polecenia appcmd /?, aby polecenia miały zastosowanie tylko do określonej aplikacji w witrynie, a nie do całego serwera WWW . Kilka wyszukiwań - kilka godzin później przez dwa dni i co najmniej trzy tuziny odwiedzonych stron - wciąż jestem bezowocny.

Jak to się dzieje w przypadku zarazy - wydaje się, że powinno być tak łatwo!

Odpowiedz

11

Otwórz Edytor konfiguracji w IIS. Jest dostarczany z IIS 7.5 lub możesz pobrać IIS administration pack dla IIS 7.0. Przejdź do zasięgu, na który chcesz wpłynąć (serwer, witryna lub aplikacja), a następnie otwórz ikonę:

IIS Configuration Editor.

Zmiana Sekcja do system.webServer/security/authentication/windowsAuthentication:

IIS Configuration Editor - Windows Authentication

Kliknij na pozycji providers, a następnie kliknij Edit Items po prawej stronie. Wybierz „Negocjuj” element i kliknij „Usuń”:

IIS Configuration Editor - Windows Authentication - providers

Zamknij okno i kliknij Apply w okienku Actions po prawej stronie.

Twój problem został rozwiązany! Koniec z Kerberos/negocjuj!

Uwaga: można również kliknąć Generate Script w okienku Akcje, aby wyświetlić kod, który pozwoli na zmianę albo w C#, JavaScript, lub z appcmd z linii poleceń.

Dla odniesienia, tutaj jest instrukcja appcmd, aby wykonać zadanie bez użycia Edytora konfiguracji.

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