让我解释一下:应用程序已经在使用Windows集成安全性,而不是Forms。我想要完成的是所谓的“升级”身份验证,或针对以下情况的“强制重新身份验证”:
这可以防止以下两个问题:
我知道,有些人会认为这是“偏执狂”,但有些人会说这是常识,应该在某个地方构建(jQuery或.NET)
我真的很感激任何意见。谢谢!
答案 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)来访问敏感区域。 如果有人知道并输入了他们老板的凭证,那么你无法做到这一点。