2012-02-15 14 views
6

Mam kilka aplikacji internetowych działających w systemie Windows Server 2003 z usługami IIS 6.0.Uwierzytelnianie oparte na formularzach nie działa między aplikacją .Net 2.0 i .Net 4.0

Aplikacje działają pod Asp.net 2.0.

Ostatnio zainstalowałem aplikację internetową MVC 3, która jest w swojej naturze asp.net 4 oparta. Bilet do formularza nie został rozpoznany w tym nowym zgłoszeniu.

mam te same MachineKey ustawienia w plikach Machine.config różnych wersjach asp.net, które zostały utworzone za pomocą tego linku: http://aspnetresources.com/tools/machineKey

Konfiguracja logowania w aplikacji internetowej jest tak:

<authentication mode="Forms"> 
    <forms name=".WEBAUTH" 
     loginUrl="login.aspx" 
     protection="None" 
     slidingExpiration="true" 
     enableCrossAppRedirects="false"  
     timeout="43200"  
     path="/" /> 
    </authentication> 

I odpowiednio konfiguracja mvc aplikacji jest:

<authentication mode="Forms"> 
    <forms name=".WEBAUTH" 
     loginUrl="http://path2theloginapp/login.aspx" 
     protection="None" 
     slidingExpiration="true" 
     enableCrossAppRedirects="false"  
     timeout="43200"  
     path="/" /> 
    </authentication> 

    <authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
    </authorization> 

prace logowania, ale zawsze r MVC aplikacji przekierowuje z powrotem do strony logowania.

Teraz, jeśli zmienię wersję asp.net aplikacji webowej logowania w konfiguracji IIS na asp.net 4.0, to działa. Ale wtedy wszystkie inne aplikacje działające na asp.net 2 nie działają.

Czy ktoś rozwiązał uwierzytelnianie oparte na formularzu w podobnej sytuacji?

Odpowiedz

5

musiałem przejść długą drogę i otworzył wsparcie dla Microsoft.

Jak się okazało, odpowiednie aktualizacje zabezpieczeń firmy Microsoft Security Bulletin MS11-100 brakowało:

http://technet.microsoft.com/en-us/security/bulletin/ms11-100.
Wybierz swój system operacyjny i zainstaluj aktualizacje dla .Net 2.0 i 4.0.

Uaktualnia to ustalone uwierzytelnianie oparte na formularzach bez konieczności ponownej konfiguracji zaangażowanych aplikacji internetowych.

+0

Dziękuję bardzo! –

2

To jeden z breaking changes w ASP.NET 4.0:

Hashing domyślny algorytm jest teraz HMACSHA256

ASP.NET wykorzystuje zarówno szyfrowanie i mieszania algorytmy w celu zabezpieczenia danych takie jak pliki cookie uwierzytelniania formularzy i zobacz stan. Domyślnie ASP.NET 4 teraz używa algorytmu HMACSHA256 dla operacji mieszania na plikach cookie i widoku stanu. Wcześniejsze wersje ASP.NET używały starszego algorytmu HMACSHA1 .

Twoje aplikacje mogą zostać zmienione, jeśli uruchomisz mieszane środowiska ASP.NET 2.0/ASP.NET 4, w których dane, takie jak pliki cookie uwierzytelniania formularzy, muszą działać w różnych wersjach .NET Framework. Aby skonfigurować ASP.NET aplikacji Web 4 do korzystania ze starszej algorytm HMACSHA1 dodaj następujące ustawienia w pliku Web.config:

<machineKey validation="SHA1" />

+0

Walidacja jest ustawiana zgodnie z zaleceniami pliku machine.config.Czy to może działać, jeśli pozwolę, aby aplikacja internetowa i pula aplikacji działały w trybie asp.net 2.0? – ms007

+0

@ MS007, nie, nie można mieć aplikacji ASP.NET MVC 3 uruchamianej w środowisku CLR 2.0. Wymaga .NET 4.0. Z drugiej strony możesz sprawić, aby starsza aplikacja działała w środowisku .NET 4.0. –