ASP.NET 4 MVC 的身份模拟未按预期工作

2023-12-20

我正在为我们的分析师构建一个 Intranet MVC 4 应用程序。目标是允许内部用户访问此应用程序,而无需登录,因为他们是我们内部网络的一部分。当他们访问应用程序时,我希望能够捕获他们的 Windows 用户名并使用 LDAP 检查活动目录并检索他们所属的部门并在屏幕上显示相关详细信息。根据不同论坛的建议,我为此应用程序选择了 Windows 身份验证,并且能够测试从 Visual Studio 成功运行的应用程序。我遇到的问题是当我将其部署到运行 IIS 7.5 的 UAT 服务器时。

<authentication mode="Windows">
</authentication>
<identity impersonate="false" />

这是我的 Web.config 文件的当前状态。无论模拟是真是假,应用程序似乎都不会捕获访问该应用程序的浏览器的 Windows 用户名。是

冒充=真实

根本需要这个吗?在主页的欢迎消息中,我总是看到托管应用程序/运行 IIS 的计算机的 Windows 用户名。我尝试了多种方法来捕获传入用户请求的 Windows 用户名。

string name = System.Web.HttpContext.Current.User.Identity.Name;
string name = System.Web.HttpContext.Current.Request.LogonUserIdentity.Name;
string name = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string name = System.Web.HttpContext.Current.Request.ServerVariables["LOGON_USER"].Name;

等等。我还在这里查看了其他几篇文章,例如this https://stackoverflow.com/questions/1267071/how-to-get-windows-user-name-when-identity-impersonate-true-in-asp-net。但我无法让它发挥作用。我担心我是偶然实现这一目标,而不是真正理解发生了什么?有人可以指导我正确的方向吗?


不,你误解了模仿的目的。

首先,在集成模式下运行的 IIS 7 或更高版本中不再支持模拟。

其次,模拟的目的是更改工作进程在运行时运行的“用户”,特别是允许以该用户身份访问文件系统或数据库资源。一般来说,它与身份验证无关,并且对于大多数 Web 应用程序来说并不是特别有用。

您想要使用 Windows 身份验证,但您应该知道这仅适用于 Internet Explorer。它还仅适用于加入您的域的服务器,并且不存在任何中间 Kerberos 身份验证问题。 (这些通常称为“双跳”问题)。默认情况下,其他浏览器不会自动提供 Active Directory 帐户信息,尽管有些浏览器可能配置为允许这样做,但其他浏览器则不允许。

如果您使用的是经过 Windows 身份验证正确配置的服务器,并且您使用的浏览器支持 ActiveDirectory Kerberos 票证直通,并且不存在会导致此直通出现问题的网络问题,那么您可以使用HttpContext.Current.User.Identity.Name获取用户名。

不要使用 LogonName 或类似的名称,因为它们只会为您提供工作进程,而不是经过身份验证的用户名。

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

ASP.NET 4 MVC 的身份模拟未按预期工作 的相关文章

随机推荐

  • 在应用程序和扩展程序之间共享捆绑资源

    我的照片共享扩展计划使用相同的设计资源 用于导航和向照片添加 图章 贴纸 如应用程序沙盒设计指南中所述 沙盒应用程序组 需要共享文件和其他信息的可以请求容器 目录作为其权利的一部分 这些目录是存放的 在 Library Group Cont
  • 如何获取 XGBClassifier 的预测 p 值?

    我想知道 XGBClassifier 对它所做的每个预测的置信度如何 有可能有这样的价值吗 或者 predict proba 是否已经间接成为模型的置信度 你的直觉确实是正确的 predict proba返回每个示例属于给定类别的概率 来自
  • 读取注册表项的性能?

    我想知道通过标准 C 库从 Windows 注册表读取注册表值需要多长时间 以毫秒为单位 在这种情况下 我正在阅读一些代理设置 我应该期望什么数量级的值 有没有好的基准数据可用 我正在运行 WS2k8 R2 amd64 加分点 操作系统 s
  • Django REST框架范围过滤器

    如何在 Django REST Framework 中对日期和数字进行范围过滤 其他过滤器 lt gt 等 工作正常 我尝试了很多变体 例如 import rest framework filters as filters class Or
  • 如何在 PHP 中将查询字符串转换为斜杠 URL?

    我想将 URL 转换为 http localhost projectname api index php type login to http localhost projectname api login Convert在这里不是一个常用
  • 如何统计Apache Flink在给定时间窗口内处理的记录数

    在flink中定义一个时间窗口后如下 val lines socket timeWindowAll Time seconds 5 如何计算该特定 5 秒窗口内的记录数 执行计数聚合的最有效方法是ReduceFunction 然而 reduc
  • 引用 jssc 库的可运行 jar 无法满足链接错误

    我们正在创建一个可运行的 java jar 来在 beagleboneblack 运行 ubuntu 上运行 我们创建了一个可运行的 jar 它可以在我们的 mac 和 pc windows 上运行良好 但不能在 ubuntu 系统上运行
  • Skype for Business URI 而不是 Skype

    因为我们可以选择通过提供 URI 来打开 Skype 中的链接 skype xyz call 我们可以做类似的事情来实现相同的功能 但它会在 Skype for Business 中打开吗 请告诉我 Cheers 经过大量研究后找到了解决方
  • 为什么Linq GroupBy在OrderBy之后驳回了订单操作?

    我有一个Action模型与Session导航属性 考虑这段代码 var x db Actions OrderBy p gt p Session Number ThenBy p gt p Date it s OK x 是一个有序的 Actio
  • 在 JasperReports 中以任意角度旋转文本

    我在用iReport生成pdf 我需要以任意角度旋转文本 正如我在文档中读到的那样 iReport可以将文本旋转 90 180 270 和 360 度 我也想要它的动态值 为此 我尝试了这些过程 但没有得到预期的结果 使用自定义 jar 旋
  • 删除列表项时出现意外的索引错误[重复]

    这个问题在这里已经有答案了 我是 Python 初学者 我以前学过其他语言 比如C 初学者 和JQuery 但我发现 python 中的循环非常混乱 好吧 我想实现一个简单的结果 程序将循环遍历单词列表 然后删除与first两个字母与列表中
  • 带有 MVC4 模型绑定的 Angular JS 因日期/日期时间而失败?

    当使用 Angular JS 将复杂对象的日期时间和日期时间回发到服务器时 值未正确绑定 我尝试过 JSON stringify 无济于事 我已经发布了一个相关问题 但可能太笼统了 我真正需要知道的是如何正确传递这些日期 我目前正在做的是使
  • 检测 NSString 中的电话号码

    我想从 NSString 中提取电话号码 例如 在字符串中致电约翰 994 456 9966 我想提取994 456 9966 我尝试过类似的代码 NSString nameRegex d 3 s d 3 s d 4 NSPredicate
  • 使用 IIS7 URL 重写模块强制使用 HTTPS 并避免重复的 URL

    我需要强制每个请求https www mysite com https www mysite com 始终带有 https 和 www 该网站托管在 GoDaddy 中 我需要通过 IIS7 URL 重写模块来完成此操作 我已经能够使用以下
  • 维护asp.net、C#中Fileupload控件的值

    我在更新面板中使用 Fileupload 和 3 个下拉控件 3 个下拉列表将在下拉所选索引更改事件上回发 即 国家 州和城市 根据国家 州和城市从数据库获取值 问题是 回发时 文件名路径将从文件上传控件中消失 如预期 或默认属性 我正在将
  • DocuSign Connect Webhook 不包括 HMAC 标头

    我已经参考过this https stackoverflow com questions 56673644 docusign connect webhook call did not include hmac header x docusi
  • Inno Setup 和 VC Redistributable 并优雅地处理退出代码 3010

    In my CurStepChanged我有一些安装 Visual Studio Redistributable 的代码 如果需要 代码片段 if bVcRedist64BitNeeded then begin if Exec Expand
  • 如何将栅格更改为特定的空间分辨率?

    我想更改光栅的分辨率 例如 我们以 此 Landsat 7 图像分辨率约为 30m library terra gt terra 1 5 21 f lt system file tif L7 ETMs tif package stars r
  • Maven 在发布时不会复制未跟踪的资源

    我的问题是关于使用 maven 进行发布时要包含在 jar 文件中的资源 我正在使用 Maven 来构建我的项目 当我运行时 mvn package 资源包含在输出 jar 中 但当我跑步时 mvn release prepare mvn
  • ASP.NET 4 MVC 的身份模拟未按预期工作

    我正在为我们的分析师构建一个 Intranet MVC 4 应用程序 目标是允许内部用户访问此应用程序 而无需登录 因为他们是我们内部网络的一部分 当他们访问应用程序时 我希望能够捕获他们的 Windows 用户名并使用 LDAP 检查活动