用户身份validation – ASP.NET应用程序中IIS的用户名不匹配

上周,员工的Active Directory用户名被更改(或者为他们创build了新的用户名)。 为了这个例子的目的,我们假设这些用户名:

Old: Domain\11111 New: Domain\22222 

当这个用户现在使用他们的新用户名login,并尝试浏览到任何一个ASP.NET应用程序使用Windows身份validation(不启用匿名),系统进行身份validation,但我们的下一层数据库驱动的权限阻止他们从被授权。 我们追踪到他们的login帐户和IIS认为他们是谁之间的用户名不匹配。 以下是在Windows 2008 IIS7.5环境中运行的应用程序的几个ASP.NETvariables的输出:

 Request.ServerVariables["AUTH_TYPE"]: Negotiate Request.ServerVariables["AUTH_USER"]: Domain\11111 Request.ServerVariables["LOGON_USER"]: Domain\22222 Request.ServerVariables["REMOTE_USER"]: Domain\11111 HttpContext.Current.User.Identity.Name: Domain\11111 System.Threading.Thread.CurrentPrincipal.Identity.Name: Domain\11111 

从上面我可以看到,只有LOGON_USER服务器variables具有正确的值,这是用户用来login到他们的机器的帐户。 但是,我们使用“AUTH_USER”variables来查找数据库权限。

在单独的testing环境(完全不同的服务器:Windows 2003,IIS6)中,以上所有variables都显示“Domain \ 22222”。 所以这似乎是一个特定于服务器的问题,就像凭证以某种方式caching在他们的机器或服务器上(前者似乎更合理)。

所以问题是:我如何确认是用户的机器还是服务器正在处理请求? 我应该如何解决这个问题?

我看了下面两个资源,很快就会给出第一个资源:

  • http://www.interworks.com/blogs/jvalente/2010/02/02/removing-saved-credentials-passwords-windows-xp-windows-vista-or-windows-7
  • https://stackoverflow.com/questions/2325005/classic-asp-request-servervariableslogon-user-returning-wrong-username/5299080#5299080

谢谢。

这个问题在这里看起来类似于这个问题:

https://stackoverflow.com/questions/168946/iis-returning-old-user-names-to-my-application

澄清这里是解决scheme:

http://support.microsoft.com/kb/946358