6

Hãy để tôi giải thích: ứng dụng đã sử dụng bảo mật tích hợp Windows, không phải Biểu mẫu. Những gì tôi đang cố gắng để hoàn thành là một cái gọi là "bước lên" xác thực, hoặc "lực lượng tái thẩm định" đối với các tình huống sau:Làm cách nào để xác thực lại người dùng trong ứng dụng ASP.Net MVC 3 _Intranet_?

  1. người dùng đang duyệt trang web làm công cụ thông thường, tầm thường
  2. đột ngột , người dùng phải thực hiện hành động nhạy cảm, chẳng hạn như ủy quyền cho phân bổ nguồn cấp dữ liệu hoặc xác nhận khoản vay xe hơi hoặc điều gì đó tương tự
  3. người dùng được nhắc chứng chỉ trước khi (s) anh được chuyển hướng đến trang nhạy cảm, theo cách tương tự thành "Đăng nhập với tư cách là người dùng khác" của SharePoint "
  4. nếu và chỉ khi nào, các thông tin đăng nhập được nhập là giống như đối với người dùng hiện đang đăng nhập, ứng dụng sẽ chuyển đến khu vực nhạy cảm.

Điều này sẽ ngăn chặn 2 vấn đề sau:

  1. Người dùng đi cho một cuộc họp hay một ly cà phê và quên để khóa máy trạm và một đồng nghiệp sử dụng phiên để truy cập nhạy cảm khu vực
  2. Người dùng nhập thông tin đăng nhập của người quản lý của mình (bởi vì, hãy nói rằng anh ấy đã lén nhìn qua cái xẻng của ông chủ) để truy cập vào khu vực nhạy cảm.

tôi biết, một số sẽ xem xét điều này như "bị hoang tưởng", nhưng cũng có một số sẽ nói đó là lẽ thường và nên được xây dựng trong một khuôn khổ đâu đó (jQuery hoặc .NET)

Tôi thực sự sẽ đánh giá cao bất kỳ đầu vào nào. Cảm ơn bạn!

+1

Để ghi lại, tôi không nghĩ rằng có một thứ như "hoang tưởng" khi xử lý thông tin nhạy cảm. Bạn đã thử định cấu hình thư mục ảo cho trang web của mình chưa? –

+0

Đây là một lý do mà tôi gần như không bao giờ sử dụng xác thực tích hợp - nó ủy quyền bảo mật cho bảo mật máy trạm, mà tôi không có quyền kiểm soát. – tvanfosson

Trả lời

4

Có biểu mẫu gửi thông tin xác thực cùng với yêu cầu thực hiện hành động, nghĩa là một số hành động yêu cầu bạn cung cấp tên người dùng/mật khẩu. Sử dụng phương thức PrincipalContext ValidateCredentials để đảm bảo rằng thông tin đăng nhập thích hợp đã được nhập và kiểm tra xem tên người dùng được cung cấp có khớp với tên người dùng hiện tại trong đối tượng User.Identity hay không.

public ActionResult SensitiveAction(SensitiveModel model, string username, string password) 
{ 
    using (var context = new PrincipalContext(ContextType.Domain)) 
    { 
     if (!string.Equals(this.User.Identity.Name,username,StringComparison.OrdinalIgnoreCase) 
      || !context.ValidateCredentials(username,password)) 
     { 
       return View("PermissionDenied"); 
     } 
    } 

    ... 
} 
+1

cảm ơn bạn đã phản hồi nhanh chóng!nhưng điều này có nghĩa là tạo một chế độ xem mới để nhận thông tin đăng nhập theo cách thủ công qua https. Có cách nào để sử dụng dấu nhắc ủy nhiệm tích hợp giống như SharePoint không? Tôi đoán nó làm điều đó bằng cách cố gắng truy cập một tập tin được bảo vệ, '_layouts/AccessDenied.aspx'. – PricklyMaster

2

Người dùng đi cho một cuộc họp hay một ly cà phê và quên để khóa máy trạm và một đồng nghiệp sử dụng phiên để truy cập khu vực nhạy cảm Đó chỉ hoạt động lần đầu tiên, nhưng bây giờ ông chủ đi vào một nhạy cảm khu vực, nhập lại thông tin đăng nhập của cô ấy, sau đó đi uống cà phê. Bạn sẽ nhắc cho mọi yêu cầu nhạy cảm? Người dùng sẽ không đưa ra điều đó.

Người dùng nhập thông tin đăng nhập của người quản lý của mình (bởi vì, giả sử anh ấy đã nhìn trộm qua sếp của người quản lý) để truy cập khu vực nhạy cảm. Nếu ai đó biết và nhập thông tin đăng nhập của sếp của họ, bạn không thể làm gì để phát hiện ra điều đó.

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