如何在ASP.Net MVC 3 _Intranet_应用程序中重新验证用户?

时间:2011-09-28 15:23:00

标签: asp.net-mvc windows-integrated-auth pre-authentication

让我解释一下:应用程序已经在使用Windows集成安全性,而不是Forms。我想要完成的是所谓的“升级”身份验证,或针对以下情况的“强制重新身份验证”:

  1. 用户正在浏览网站,做一些普通的,琐碎的事情
  2. 突然,用户必须执行敏感操作,例如授权 资源分配或确认汽车贷款或类似的东西
  3. 在重定向到用户之前,系统会提示用户输入凭据 敏感页面,类似于SharePoint的“登录为” 一个不同的用户“
  4. 当且仅当输入的凭据是     与当前登录用户的应用程序相同     前往敏感地区。
  5. 这可以防止以下两个问题:

    1. 用户去参加会议或喝咖啡,忘记锁定 工作站和同事使用会话访问敏感 区域
    2. 用户输入他或她的老板的凭证(因为,让我们 说他偷看老板的“sholder”来进入敏感区域。
    3. 我知道,有些人会认为这是“偏执狂”,但有些人会说这是常识,应该在某个地方构建(jQuery或.NET)

      我真的很感激任何意见。谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:2)

用户去参加会议或喝咖啡,忘记锁定工作站,同事使用会话访问敏感区域 这只是第一次,但现在老板进入一个敏感区域,重新输入她的凭据,然后去喝咖啡。你是否会提示每个敏感请求?用户不会忍受这一点。

用户输入他或她的老板的凭证(因为,让我说他偷看老板的sholder)来访问敏感区域。 如果有人知道并输入了他们老板的凭证,那么你无法做到这一点。