如何在 ASP.NET MVC 3 Intranet 应用程序中重新验证用户身份?

2024-04-10

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

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

这可以防止以下两个问题:

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

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


让表单发送凭据以及执行操作的请求,即某些操作要求您提供用户名/密码。使用PrincipalContext验证凭证 http://msdn.microsoft.com/en-us/library/bb154889.aspx方法以确保输入了正确的凭据并检查提供的用户名是否与当前用户名相匹配User.Identity object.

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");
         }
    }

    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC 3 Intranet 应用程序中重新验证用户身份? 的相关文章

随机推荐

  • 放弃所有本地更改并返回到最后拉取的版本

    我如何在 git 中放弃所有本地更改 提交并返回到最后拉取的版本 命令必须位于一个字符串 字段 中 You can reset https git scm com book en v2 Git Tools Reset Demystified
  • 在 Spring Boot 中转义 Yaml 中的 Map 键中的点

    我有以下 yml 配置 foo bar com a b baz com a c 通过以下类 Spring 尝试使用键 bar 和 baz 注入映射 将点视为分隔符 public class JavaBean private Map
  • 如何在 log4j2 中生成标题行

    在 log4j 中 我们有时会创建第二个记录器并向其输出 CSV 数据 作为应用程序的指标监视 与我们用于调试等的普通日志相反 这些数据很容易导入和绘制图表 在旧的 log4j 中 我们通过子类化 PatternLayout 覆盖 head
  • 如何找到“无法加载‘xxx.dll’导入的过程”的来源。例外?

    过去一周我一直在追求这个例外 情况是 我有一个用 C 编写并在 Visual Studio 2010 中构建的应用程序 该应用程序包含一个 DLL 它是非托管代码库的包装器 非托管代码是用 C 编写的 并在 Visual Studio 20
  • 如何将系统变量值传递给执行 SQL 任务中的 SQL 语句?

    SSIS 2008 非常简单的任务 我想检索系统变量并在 SQL INSERT 中使用它 我想检索的值System MachineName并在插入语句中使用它 使用声明INSERT INTO MYLOG COL1 SELECT System
  • C++ - 在文本文件中查找和替换(标准系统库)

    我正在寻找一些建议 我的情况 应用程序适用于文本本地文件 文件中的某处有这样的标签 correct TEXT 不幸的是 之间可以有无限的空格correct and TEXT 获得的文本正在功能测试中 可能会被替换 更改必须存储在文件中 co
  • 更改列表视图中文本视图的可见性

    我有一个列表视图 它由来自单独布局文件的两个文本视图组成 我用一个BaseAdapter从 JSON 文件构建列表 我希望第一个文本视图 标题 可单击 如果单击它会显示第二个文本视图 文本 如果再次单击它会隐藏它 当我使用onClick a
  • kibana server.basePath 结果为 404

    我在 RHEL 7 2 上运行 kibana 4 4 1 当 kibana yml 文件不包含设置时一切正常server basePath Kibana 成功启动并吐出消息 info listening Server running at
  • 在哪里可以找到 PHP 的错误日志文件?

    在哪里可以找到错误日志文件 我需要检查它们以解决安装后显示的内部服务器错误suPHP https wiki archlinux org title SuPHP 您可以使用lsof https en wikipedia org wiki Ls
  • Asterisk AGI:如何获取或设置全局变量的值?

    我使用 Asterisk 1 8 和 PHP 来编写 AGI 脚本 EDIT 我正在努力从 AGI PHP 脚本中设置和获取全局变量的值 我可以设置通道变量 但不能设置全局变量 使用 PHPAGI 库 Tried Set varname v
  • Puppeteer 在非无头模式下打开一个空选项卡

    运行 puppeteer npm 的最新版本 0 13 0 并将参数传递给 puppeteer launch headless false chrome 以空页面作为第一个选项卡打开 并从第二个选项卡中的脚本打开实际页面 const pag
  • 尝试调整 2fs EB 卷大小失败 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个 200GB 的 EBS 卷 正在尝试增加可用空间 我按照以下说明进行操作 http www hellersoftware com
  • Swift:通过 Twitter 分享文本

    所以基本上我正在制作一个事件应用程序 一切都很顺利 只是将活动分享到了 Twitter 我已经在互联网上搜索过 但我得到的只是使用我不想要的 Twitter 的本机应用程序 我想使用浏览器发推文 我已经实现了这个方法用于FB共享 任何想法都
  • terraform 资源创建 - this 关键字

    我在几个例子中发现了一种模式terraform代码在Github resource aws vpc this 我想知道关键字如何this与命名资源相比 提供了特殊的优势 我找不到哈希公司文档关于this关键词 https github co
  • 正则表达式:仅匹配一次

    我有一个包含多个 IP 地址和一些随机内容的字符串 例如像这样的 21 Jun 2018 01 15 38 0000 188 79 169 152 157 52 69 50 443 GET 157 52 69 30 157 52 69 10
  • C++:删除打印机队列

    我正在尝试从打印机中删除队列中的所有文件 我发现这看起来很简单 我尝试使用下面的代码删除队列 它可以编译 但 SetPrinter 返回 false 我收到的错误消息是 5 我尝试使用该方法将其解码为 正常 错误消息从这个问题 https
  • 是什么导致 Safari 中的音频播放缓慢/延迟?

    var audio new Audio data audio wav base64 UklGRoABAABXQVZFZm10IBAAAAABAAEAiBUAAIgVAAABAAgAZGF0YVwBAACHlqa1xNLg7vv Tk1LSk
  • 按 iframe 内的 Youtube 订阅表单按钮

    我正在搜索如何从 Youtube 订阅表单按下订阅按钮 但我没有找到任何可以帮助我的东西 我是 JS 新手 所以我希望你能帮助我 用于按下订阅按钮here http www youtube com subscribe widget p aa
  • 如何在 JavaScript 中模拟 target="_blank"

    当用户单击链接时 我需要更新数据库中的字段 然后在新窗口中打开请求的链接 更新没问题 但我不知道如何打开新窗口而不要求他们单击另一个超链接 a href http www mydomain com ReportID 1 target bla
  • 如何在 ASP.NET MVC 3 Intranet 应用程序中重新验证用户身份?

    该应用程序已经使用 Windows 集成安全性 而不是 Forms 我想要完成的是所谓的 逐步 身份验证 或针对以下情况的 强制重新身份验证 用户正在浏览网站做一些常见的 琐碎的事情 突然 用户必须执行敏感操作 例如授权 资源分配或确认汽车