【发布时间】:2016-11-17 16:19:14
【问题描述】:
我在 Windows 身份验证方面遇到了一个奇怪的问题。我们有一个 asp.net webforms 应用程序,其中有一个使用 Windows 身份验证的文件夹。此文件夹已正确配置用于 IIS 中的 Windows 身份验证。该应用程序通过 web.config 使用 .net 模拟。当我们使用 Windows 身份验证导航到此文件夹中的页面时:
- system.web.httpcontext.current.user.Identity.Name 返回执行请求的用户的名称(这是预期的)
- System.security.principal.windowsIdentifier.getCurrent.Name 返回运行应用程序的用户名(这也是预期的)
现在,我们一直在努力开发新版本的产品。我们现在发现行为发生了变化。当我们再次执行相同的测试时,httpcontext 用户名和 principal.windowsidentity.getcurrent 都会返回执行请求的用户名。
我们检查了所有相关代码,似乎找不到与此行为有关的任何差异。我们在新版本中将应用程序从 .Net 4.0 转换为 .Net 4.5.2,但是,当我们将旧版本转换为 .Net 4.5.2 时,行为保持正确(2 个属性显示不同的身份),因此不会好像没什么区别。
有没有想过在哪里寻找这种行为的原因?
编辑: 调试告诉我在执行 global.asax prerequesthandler 时身份已经有错误的值。在beginrequest中没有进行网站的冒充,当前身份是应用池身份
编辑2: 它似乎是特定于服务器的。由于某种原因,旧版本在开发机器上可以正常工作,但新版本不能。但是,新版本确实可以在部署服务器(我们的日常构建)上正常工作。有人对可能的原因有任何指示吗?
【问题讨论】:
标签: asp.net webforms windows-authentication windows-identity