2011-08-16 12 views
5

Mamy witryny IIS7 intranetowego zintegrowanego z systemem pod rurociągiem, który jest głównie ASP.Net z kilkoma starszymi klasycznych stron ASP. Witryna umożliwia anonimowy dostęp do większości obszarów, ale wykorzystuje uwierzytelnianie systemu Windows do ochrony określonych folderów. Żądania stron ASP.Net w chronionych folderach zachowują się zgodnie z oczekiwaniami (autoryzowani użytkownicy mogą je wyświetlać, inni są odrzucani), ale każdy użytkownik może zobaczyć klasyczną stronę ASP w chronionych folderach, niezależnie od uprawnień.uwierzytelnianie systemu Windows nie działa dla klasycznych stron ASP (ale działa dla stron ASP.NET w/w tym samym miejscu)

Podejrzewam moduł uwierzytelniania systemu Windows nie jest wywoływana dla żądań do klasycznych stron ASP. Pracujemy w trybie zintegrowanego potoku i znalazłem ten artykuł (http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline/), który wskazuje, że musisz jawnie usunąć i ponownie dodać moduły, jeśli chcesz skorzystać ze zintegrowanego potoku dla żądań spoza protokołu. Próbowałem skopiować przykład artykuł jest tylko zastępując FormsAuthenticationModule z WindowsAuthenticationModule przez dodanie następujących do pliku web.config w katalogu głównym aplikacji:

<system.webServer> 
<modules> 
     <remove name="WindowsAuthentication" /> 
     <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="" /> 
</modules> 
</system.webServer> 

Jednak klasyczne strony ASP są wciąż serwowane są niezależnie od zgody.

Odpowiedz

2

Klasyczne strony ASP całkowicie ignorują web.config lub jakiekolwiek inne .config.

Jedynym sposobem, aby obsłużyć to w przypadku klasycznej ASP, jest przejście przez IIS, przeniesienie klasycznych stron ASP na osobną wirtualną stronę internetową, a następnie na tę wirtualną stronę internetową ustawić Windows Authentication i wyłączyć Anonimowy dostęp.

To może pomóc także:
IIS7: Setup Integrated Windows Authentication like in IIS6

+0

Thanks @shadowWizard, ale jestem zdezorientowany. Pomyślałem, że jedną z zalet zintegrowanego potoku jest to, że można zastosować zabezpieczenia ASP.Net do dowolnego żądania (ASP.Net, klasyczna ASP, a nawet statyczna zawartość - html i obrazy). Z artykułu, do którego linkowałem: "Zezwalając na usługi dostarczane przez moduły rodzime i zarządzane do zastosowania do wszystkich żądań, niezależnie od programu obsługi, na przykład za pomocą zarządzanego uwierzytelniania formularzy można korzystać dla wszystkich treści, w tym stron ASP, CGI i plików statycznych. " Jeśli można zastosować uwierzytelnianie formularzy zarządzanych, czemu nie można zarządzać uwierzytelnianiem systemu Windows? –

+0

Nie jestem ekspertem w tej dziedzinie, ale wiem, że uwierzytelnianie systemu Windows oznacza: serwer wysyła do przeglądarki klienta nagłówek "Proszę zidentyfikować siebie". Przeglądarka klienta automatycznie wysyła poświadczenia lub prosi użytkownika o wpisanie ich, w zależności od rodzaju przeglądarki i ustawień. Teraz wszystko dzieje się "za kulisami" i na niskim poziomie komunikacji między przeglądarką a serwerem. Uwierzytelnianie formularzy to wyższy poziom. To jest mój wybór, mam nadzieję, że ktoś, kto wie lepiej, pojawi się i wyjaśni to dokładniej. –