2009-02-19 23 views
8

Tôi đọc một trang chạy dưới kết nối https không thể chia sẻ Phiên InProc (dựa trên cookie) với một trang khác (hoặc tương tự cho vấn đề đó) chạy dưới http thường xuyên. Trang web của tôi đang chạy trên Server 2003, IIS 6 và .Net 2.0.làm cách nào để chia sẻ phiên asp.net giữa http và https

Sau một số thử nghiệm, có vẻ như trang lưu trữ dữ liệu trong phiên trong khi được kết nối qua https CAN sau đó có thể truy cập dữ liệu ngay cả khi chạy dưới http đơn giản.

Vì vậy, có thể hoặc tôi nên đi qua và tìm lỗi trong cấu hình SSL?

Trả lời

15

Từ MSDN:

Khi người dùng di chuyển tới lui giữa an toàn và khu vực công cộng, các cookie phiên ASP.NET tạo ra (hoặc URL nếu bạn đã kích hoạt trạng thái phiên cookie ít) di chuyển với chúng trong văn bản rõ ràng, nhưng xác thực cookie không bao giờ được chuyển qua kết nối HTTP không được mã hóa là dài làm thuộc tính cookie bảo mật được đặt.

Về cơ bản, cookie có thể được chuyển qua cả HTTP và HTTPS nếu thuộc tính Secure được đặt thành false.

tôi đã tránh được vấn đề này bằng cách bổ sung này để tập Global.asax tôi:

void Session_Start(object sender, EventArgs e) 
{ 
    if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false; 
} 

Điều này có nghĩa rằng nếu cookie phiên được tạo ra qua HTTP, nó sẽ chỉ có thể truy cập qua HTTPS.

+0

Ý nghĩa an toàn của việc tắt tính năng này là gì? –

1

Tìm kiếm sự cố không bật lên nhiều trò chuyện về nó cho đến nay, vẫn đang tìm kiếm.

Chỉnh sửa: không sao tìm được một số nội dung ngay bây giờ.

Có vẻ như nó sẽ hoạt động tốt nếu cả hai tập hợp các trang nằm trong cùng một ứng dụng/trang web.

Vì vậy, tôi muốn tiếp tục và tiếp tục, cảm thấy yên tâm.

5

IIS thiết Trong cửa sổ thuộc tính IIS, trong tab ASP -> phiên Properties, có một thiết lập cho “ID mới về Kết nối bảo mật”

Tôi cố định vấn đề không liên tục này cho bản thân mình bằng cách thiết lập này thành sai.

+0

Điều này dường như đã biến mất trong IIS7 - hoặc có lẽ tôi không rõ ràng về nơi này sẽ được tìm thấy. Đây có phải là trên mỗi trang web hoặc toàn cầu đến máy chủ không? –

+1

@ chris-moschini Trong IIS 7 có một biểu tượng 'Session State' trong 'ASP.NET', vì vậy nếu đó là nơi bạn đang tìm kiếm, bạn đang ở đúng nơi - và có, bạn là chính xác; cài đặt đó đã biến mất. –

1

Nếu bất kỳ giải pháp nào trên đây không hoạt động, hãy thử cách này. Tôi đã giải quyết vấn đề này sau khi nghiên cứu vài ngày.

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ... 
    ... 
    CookieSecure = CookieSecureOption.Never 
}); 
Các vấn đề liên quan