2012-02-15 30 views
6

Tôi có một số ứng dụng web chạy trên Windows Server 2003 với IIS 6.0.Xác thực dựa trên biểu mẫu không hoạt động giữa ứng dụng .Net 2.0 và .Net 4.0

Các ứng dụng đang chạy trong Asp.net 2.0.

Gần đây tôi đã cài đặt một ứng dụng web MVC 3 có trong tự nhiên dựa trên asp.net 4. Phiếu biểu mẫu không được rút lại trong đơn đăng ký mới này.

tôi có các thiết lập machineKey cùng trong các tập tin Machine.config trong những phiên bản asp.net khác nhau đã được tạo ra sử dụng liên kết này: http://aspnetresources.com/tools/machineKey

Cấu hình trong ứng dụng web đăng nhập là như thế này:

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

Và theo đó cấu hình của ứng dụng MVC là:

<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> 

các công trình đăng nhập, nhưng ứng dụng MVC luôn r edirects quay lại trang đăng nhập.

Bây giờ nếu tôi thay đổi phiên bản asp.net của ứng dụng web đăng nhập trong cấu hình IIS thành asp.net 4.0, nó hoạt động. Nhưng sau đó tất cả các ứng dụng khác chạy trên asp.net 2 không còn hoạt động nữa.

Có ai đã giải quyết xác thực dựa trên biểu mẫu trong một tình huống tương tự không?

Trả lời

5

tôi phải đi theo con đường dài và mở ra một hỗ trợ trường hợp với Microsoft.

Khi nó bật ra, các cập nhật bảo mật có liên quan từ Microsoft Security Bulletin MS11-100 bị mất tích:

http://technet.microsoft.com/en-us/security/bulletin/ms11-100.
Chọn hệ điều hành của bạn và cài đặt các bản cập nhật cho .Net 2.0 và 4.0.

Bản cập nhật này cố định xác thực dựa trên biểu mẫu mà không cần cấu hình lại các ứng dụng web liên quan.

+0

Cảm ơn bạn rất nhiều! –

2

Đó là một trong những breaking changes trong ASP.NET 4.0:

Mặc định Băm Algorithm Is Now HMACSHA256

ASP.NET sử dụng cả mã hóa và giải thuật băm để giúp an toàn dữ liệu như các tập tin cookie hình thức xác thực và xem trạng thái. Theo mặc định, ASP.NET 4 hiện sử dụng thuật toán HMACSHA256 cho hoạt động băm trên cookie và trạng thái xem. Các phiên bản trước của ASP.NET đã sử dụng thuật toán cũ hơn HMACSHA1.

Ứng dụng của bạn có thể bị ảnh hưởng nếu bạn chạy hỗn hợp ASP.NET 2.0/ASP.NET 4 môi trường nơi dữ liệu như cookie xác thực biểu mẫu phải hoạt động trên các phiên bản .NET Framework. Để cấu hình một ASP.NET ứng dụng 4 Web sử dụng các thuật toán HMACSHA1 cũ, thêm thiết lập sau đây trong tập tin Web.config:

<machineKey validation="SHA1" />

+0

Xác thực được đặt như bạn đã đề xuất trong machine.config.Nó có thể làm việc, nếu tôi để cho các ứng dụng web và hồ bơi ứng dụng chạy theo chế độ asp.net 2.0? – ms007

+0

@ MS007, không, bạn không thể chạy ứng dụng ASP.NET MVC 3 trong CLR 2.0. Nó đòi hỏi .NET 4.0. Mặt khác, bạn có thể làm cho ứng dụng kế thừa của bạn chạy dưới .NET 4.0. –

Các vấn đề liên quan