6

该应用程序已经在使用 Windows 集成安全性,而不是 Forms。我正在尝试完成的是所谓的“升级”身份验证,或以下场景的“强制重新身份验证”:

  1. 用户正在浏览网站做一些常见的、琐碎的事情
  2. 突然,用户必须执行敏感操作,例如授权资源分配或确认汽车贷款或类似的事情
  3. 在用户被重定向到敏感页面之前,系统会提示用户输入凭据,其方式类似于 SharePoint 的“以其他用户身份登录”
  4. 当且仅当输入的凭据与当前登录用户的凭据相同时,应用程序才会进入敏感区域。

这将防止以下两个问题:

  1. 用户去开会或喝咖啡,忘记锁定工作站,同事使用会话访问敏感区域
  2. 用户输入他或她的老板的凭据(因为,假设他偷看老板的肩膀)以访问敏感区域。

我知道,有些人会认为这是“偏执狂”,但也有些人会说这是常识,应该在某个框架(jQuery 或 .NET)中构建

4

2 回答 2

5

让表单连同执行操作的请求一起发送凭据,即,某些操作需要您提供用户名/密码。使用 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");
         }
    }

    ...
}
于 2011-09-28T15:34:06.590 回答
1

用户去开会或喝咖啡,忘记锁定工作站,同事使用会话访问敏感区域

这只适用于第一次,但现在老板进入一个敏感区域,重新输入她的凭据,然后去喝咖啡。你会提示每个敏感请求吗?用户不会忍受的。

用户输入他或她的老板的凭据(因为,假设他偷看老板的肩膀)以访问敏感区域。

如果有人知道并输入了他们老板的凭据,那么您无法检测到这一点。

于 2011-09-29T17:01:50.927 回答