用户身份验证——ASP.NET 应用程序中 IIS 中的用户名不匹配

用户身份验证——ASP.NET 应用程序中 IIS 中的用户名不匹配

上周,一名员工的 Active Directory 用户名已更改(或为其创建了一个新用户名)。为了便于说明,我们假设以下用户名:

Old: Domain\11111
New: Domain\22222

当此用户现在使用其新用户名登录并尝试使用以下方式浏览多个 ASP.NET 应用程序中的任何一个时仅有的Windows 身份验证(未启用匿名),系统会进行身份验证,但我们下一层数据库驱动的权限阻止他们获得授权。我们将其追溯到他们的登录帐户和 IIS 认为的用户名不匹配。以下是在 Windows 2008 IIS7.5 环境中运行的应用程序的几个 ASP.NET 变量的输出:

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 服务器变量具有正确的值,即用户用于登录其计算机的帐户。但是,我们使用“AUTH_USER”变量来查找数据库权限。

在单独的测试环境中(完全不同的服务器:Windows 2003、IIS6),所有上述变量都显示“Domain\22222”。因此,这似乎是特定于服务器的问题,就像凭据以某种方式缓存在他们的机器上或服务器上(前者似乎更合理)。

所以问题是:我如何确认是用户的机器还是服务器搞砸了请求?我该如何解决这个问题?

我查看了以下两种资源,并将很快尝试第一种:

谢谢。

答案1

该问题看起来与此处的问题类似:

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

为了澄清起见,这里是解决方案:

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

相关内容