asp.net mvc windows authentication - 以不同用户身份登录的用户

时间:2018-01-16 09:53:28

标签: asp.net-mvc iis windows-authentication

我们有asp.net mvc Web应用程序,在IIS中托管,启用了Windows身份验证(我们使用Active Directory对用户进行身份验证)。

在某些时候(在生产中),用户发现自己使用不同的用户登录,登录通常在用户登录组织中的笔记本电脑/ PC时完成,因此预计网站始终显示他们的登录用户PC /笔记本电脑导致这是他们的身份。

对于IIS,我们在Sql server中存储会话状态,我们在应用程序中使用HttpContext.Session维护会话。

我需要一些关于如何跟踪问题根源的指南。是否有可以帮助您分享的工具或代码?

谢谢!

2 个答案:

答案 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进来的?