我们有asp.net mvc Web应用程序,在IIS中托管,启用了Windows身份验证(我们使用Active Directory对用户进行身份验证)。
在某些时候(在生产中),用户发现自己使用不同的用户登录,登录通常在用户登录组织中的笔记本电脑/ PC时完成,因此预计网站始终显示他们的登录用户PC /笔记本电脑导致这是他们的身份。
对于IIS,我们在Sql server中存储会话状态,我们在应用程序中使用HttpContext.Session
维护会话。
我需要一些关于如何跟踪问题根源的指南。是否有可以帮助您分享的工具或代码?
谢谢!
答案 0 :(得分:2)
确保:
您拥有“集成Windows身份验证”(以前称为NTLM 在IIS中为您正在使用的应用程序启用了身份验证。
然后,您应该将 web.config 文件添加到根目录
包含<authentication>
部分的ASP.NET应用程序
它将模式设置为“Windows”
。
<authorization>
部分添加到同一部分
web.config 文件,拒绝访问访问该网站的“anonymous”
用户。这将迫使ASP.NET始终对其进行身份验证
传入的浏览器用户使用Windows身份验证 - 并确保
从服务器上的代码中,您始终可以访问用户名和
传入用户的Windows组成员身份。下面的 web.config 文件演示了如何配置上述两个步骤:
<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
答案 1 :(得分:2)
排除故障...
要查看错误,我会确保您在每个页面上显示当前用户HttpContext.Current.User.Identity.Name;
。刷新页面并确保用户不会更改。转到其他页面并执行相同操作。清除浏览器中的所有cookie和应用程序状态,关闭浏览器,然后重新打开浏览器并返回该站点。您仍应以每个页面和每个浏览器会话的相同用户身份登录。如果这是间歇性的,您可能需要重复几次以重现错误。
在开发人员计算机上运行本地IIS Express时是否会发生这种情况?它是否会在部署代码的其他环境(测试,登台)中发生?如果没有,生产有什么不同?
用户和生产Web服务器之间是否有代理服务器?甚至是一些用户,比如他们是通过VPN进来的?