2012-01-30 41 views
5

Chúng tôi đang chuyển đổi một số ứng dụng web của chúng tôi được sử dụng để chạy dưới xác thực biểu mẫu, để chạy dưới dạng xác thực cửa sổ. Tôi muốn tạo lại bảo mật trang mà các hình thức xác thực có với sửa đổi tối thiểu cho các trang thực tế. Tôi đã có thể tạo lại hiệu ứng tôi muốn, với một ứng dụng web được đơn giản hóa. Tôi đang chạy ứng dụng trên Server 2008 R2 tích hợp đường ống IIS 7.5.Chuyển hướng Xác thực Windows sang trang 401 tùy chỉnh

Tôi đã tạo một ứng dụng 3 trang đơn giản bằng cách sử dụng xác thực cửa sổ. Ba trang là:

  • Openpage.aspx, đó là mở cửa cho bất kỳ người dùng xác thực
  • Blockedpage.aspx mà bị chặn cho tất cả người sử dụng (biểu tượng của một thư mục hoặc trang đó sẽ bị chặn để một tập hợp con của người sử dụng dựa trên vai trò người dùng)
  • ErrorPage.aspx, nếu blockedpage.aspx được truy cập (và bị từ chối), ứng dụng sẽ chuyển tiếp đến ErrorPage.aspx nơi người dùng nhận thông tin chung về ứng dụng.

web.config cho ứng dụng:

<configuration> 
    <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
     <authentication mode="Windows"/> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    <location path="blockedpage.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <system.webServer> 
    <httpErrors errorMode="Custom" > 
     <remove statusCode="401" subStatusCode="-1" /> 
     <error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 

    <validation validateIntegratedModeConfiguration="false" /> 
    <defaultDocument> 
     <files> 
     <clear /> 
     <add value="openpage.aspx" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 

</configuration> 

(Nếu tôi không cố gắng để chuyển hướng 401 lỗi ở cấp asp.net, tôi chỉ nhận được tiêu chuẩn “không nhắn được uỷ quyền” đó không phải là hiệu ứng tôi muốn cung cấp cho người dùng của mình.)

Tuy nhiên, tôi gặp lỗi mà tôi không hiểu - mỗi khi máy chủ đặt lại, ứng dụng sẽ ngừng hoạt động. IIS chỉ trả về 401 lỗi cho đến khi trình duyệt bật lên một điều khiển đăng nhập thủ công, điều này không thể thỏa mãn được. (Tôi không bao giờ muốn người dùng của mình được hiển thị với lời nhắc đăng nhập trình duyệt)

Tuy nhiên, nếu tôi thay thế phần thiết lập khi ứng dụng được thiết lập (bằng cách chỉnh sửa cấu hình web hoặc cập nhật nó với GUI máy chủ)) xóa phần, truy cập trang và sau đó thêm lại phần, ứng dụng bắt đầu hoạt động như mong đợi và tiếp tục cho đến khi máy chủ khởi động lại, lúc đó nó bắt đầu cung cấp cho người dùng cửa sổ bật lên đăng nhập thủ công, không thể giải quyết.

1) Đây có phải là cách chính xác để đảm bảo một ứng dụng với cửa sổ xác thực (là có một cách tốt hơn để cấu hình một thư mục không thể tiếp cận như thế nào trong các hình thức, nhưng vẫn cung cấp một trang lỗi tùy chỉnh?)

2) Đây có phải là một hiệu ứng của đường ống tích hợp và tại sao nó hoạt động theo cách này?

Trả lời

1

Bạn đang cố gắng cung cấp nội dung qua thông báo lỗi truyền tải.

Biểu mẫu cho phép bạn thực hiện việc này vì nó bao gồm các công cụ lớp 7, như 302 và 200. 401 được giải thích bởi trình duyệt của khách hàng là "máy chủ không thích thông tin đăng nhập của tôi, vì vậy hãy nâng một hộp thoại để yêu cầu những cái mới".

Trang được xác thực tạo ít nhất 1 401 để được xác thực; rằng bạn đang quá tải "lỗi" cho một cái gì đó khác có lẽ là gốc của vấn đề.

Tôi không chắc chắn có một cách thanh lịch để làm những gì bạn muốn.

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