6

讓我解釋一下:應用程序已經在使用Windows集成安全性,而不是表單。我試圖做到的是所謂的「一步式」的認證,或「強制重新認證」爲以下情形:如何在ASP.Net MVC 3 _Intranet_應用程序中重新驗證用戶?

  1. 用戶正在瀏覽的網站做普通,平凡的東西
  2. 突然,用戶必須執行敏感操作,例如授權 資源分配或確認汽車貸款或類似的東西
  3. 在用戶被重定向到 敏感頁面之前,用戶被以類似的方式提示他輸入憑證到SharePoint的「登錄爲 不同的用戶」
  4. 當且僅當輸入的憑證是 與當前登錄用戶相同時,應用程序 纔會進入敏感區域。

這將防止以下2個問題:

  1. 用戶去開會或咖啡,忘記鎖定 工作站和同事使用會話訪問敏感 區域
  2. 用戶輸入他或她的老闆的憑據(因爲,讓我們 說他偷看老闆的嘲弄者)進入敏感區域。

我知道,有些人把這看作「妄想症」,也有些人會說這是常識,應該是建立在某處的框架(jQuery的或.NET)

我會很感激任何輸入。謝謝!

+1

爲了記錄,我不認爲在處理敏感信息時存在「處於偏執狀態」這樣的事情。你有沒有嘗試過爲你的網站配置一個虛擬目錄? –

+0

這是我幾乎從不使用集成身份驗證的原因之一 - 它將安全性委託給工作站安全性,我無法控制它。 – tvanfosson

回答

4

讓窗體發送證書以及執行操作的請求,即某些操作要求您提供用戶名/密碼。使用PrincipalContext ValidateCredentials方法確保已輸入正確的憑據,並檢查提供的用戶名是否與User.Identity對象中的當前用戶名匹配。

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

感謝您的及時回覆!但是這意味着創建一個新的視圖來通過https手動獲取憑證。有沒有像SharePoint一樣使用內置憑證提示的方法?我想這是通過嘗試訪問受保護的文件「_layouts/AccessDenied.aspx」來實現的。 – PricklyMaster

2

用戶去開會或咖啡,忘記鎖定工作站和同事使用會話訪問敏感區域 那隻能是第一次,但現在老闆進入一個敏感地區,重新輸入她的證書,然後去喝咖啡。你會提示每一個敏感的要求嗎?用戶不會忍受這一點。

用戶輸入他或她的老闆的憑據(因爲,假設他偷看老闆的嘲弄者)進入敏感區域。 如果有人知道並輸入了老闆的憑證,那麼您無法做出任何檢測。

相關問題