5

Tôi đang sử dụng System.IdentityModel để xác thực người dùng trong ứng dụng web ASP.NET MVC4 bằng cách sử dụng biểu mẫu auth với một tuyên bố chủ yếu. (mã dựa trên bài viết này: http://brockallen.com/2013/01/26/replacing-forms-authentication-with-wifs-session-authentication-module-sam-to-enable-claims-aware-identity/)SessionAuthenticationModule Cookie Handler không tạo HttpOnly an toàn cookie

Xác nhận quyền sở hữu của tôiBasedAuthentication Lớp dịch vụ phát hành cookie SAM từ SessionSecurityToken, và tất cả đều ... ngoại trừ việc tôi vừa mới nhận thấy rằng nó không tạo cookie phiên làm HTTPOnly hoặc yêu cầu họ yêu cầu SSL. Khi tôi gỡ lỗi mã, tôi có thể thấy các thuộc tính đó trên đối tượng CookieHandler được đặt chính xác trong trình gỡ rối, nhưng cookie phiên cuối cùng được tạo ra đơn giản không có cờ HTTPOnly và Secure được đánh dấu.

tôi có các dòng web.config để thiết lập các true một cách rõ ràng như vậy:

<system.web> 
    <httpCookies httpOnlyCookies="true" requireSSL="true" /> 
    <authentication mode="Forms"> 
    <forms ... requireSSL="true" /> 
    </authentication> 
... 
</system.web> 
<system.identityModel.services> 
    <federationConfiguration> 
    <cookieHandler requireSsl="true" hideFromScript="true" /> 
    </federationConfiguration> 
</system.identityModel.services> 

Ai đó có thể cho tôi biết nếu có cái gì khác tôi đang thiếu để cho cookie FedAuth tôi để được ẩn từ kịch bản (HTTPOnly) và yêu cầu SSL?

+0

ai đó đã đề xuất thêm thuộc tính lockItem = "true" vào phần tử httpCookies, nhưng điều đó đã không ' t làm bất cứ điều gì. –

Trả lời

0

Tôi đang sử dụng cùng một triển khai và không thấy vấn đề của bạn khi sử dụng Fiddler2. Tuy nhiên, vấn đề có thể liên quan đến công cụ gỡ lỗi của bạn? Trong các công cụ gỡ lỗi IE10, cờ an toàn và http chỉ được hiển thị khi cookie được nhận lần đầu tiên. Nếu bạn kiểm tra bằng cách sử dụng công cụ gỡ lỗi Chrome, bạn sẽ thấy các cờ được hiển thị chính xác trên tất cả các yêu cầu.

+0

Công cụ của Chrome dev cũng không hiển thị. Tôi đã thử w/Fiddler2, nhưng nó sẽ không 'thậm chí hiển thị toàn bộ yêu cầu, chỉ có một "đường hầm đến" tên máy chủ. Bạn không chắc chắn lý do tại sao Fiddler không hiển thị chi tiết yêu cầu/phản hồi như công cụ dev. –

+0

Bạn đã thiết lập Fiddler để giải mã lưu lượng HTTPS? Xem công cụ | Tùy chọn Fiddler sau đó là tab HTTPS); có hiệu quả là một người đàn ông trong cuộc tấn công trung gian, nhưng bạn sẽ thấy những gì bạn cần xem để gỡ lỗi. –

0

Bạn có làm việc này không? Tôi đã sử dụng về cơ bản cùng một mã và tất cả đều ổn.

tôi không thể thấy rằng những gợi ý sau đây có bất cứ điều gì để làm với bất cứ điều gì, nhưng những điều duy nhất tôi có thể gợi ý, là để thiết lập cookie đời

<cookieHandler hideFromScript="true" requireSsl="true" persistentSessionLifetime="30" /> 

<forms loginUrl="/Whereever" timeout="30" requireSSL="true" /> 

<system.webServer> 
    <modules> 
    <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" /> 
    </modules> 
</system.webServer> 
+1

Tôi đã không làm việc trên dự án đó trong một thời gian, nhưng nếu tôi nhớ lại, tôi nghĩ rằng thuộc tính đã được thiết lập chính xác, và các công cụ dev chỉ nói dối:) ... hoặc ít nhất đó là những gì tôi muốn nghĩ. –

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