2011-04-05 73 views
17

我们有最近更改了名称的用户。更改用户的登录名后发生错误的身份验证

假设旧用户名是old.name,新用户名是new.name。

编辑AD中的详细信息并以新的用户名登出/登录后,我们的ASP.NET应用程序显示旧名称。

纯ASP.NET,无MVC,使用Windows身份验证。

用于获取用户名的代码是:

WindowsPrincipal wp = (WindowsPrincipal)HttpContext.Current.User; 
String userName = wp.Identity.Name.Substring(wp.Identity.Name.IndexOf("\\") + 1); 

这将返回old.name,不new.name。

我检查IIS日志文件,都说明了新的名字:

2011-04-05 11:41:44 W3SVC1 MARS 10.57.1.64 GET /eft/Default.aspx - 80 - 10.57.0.161 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+Trident/4.0;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+.NET4.0C;+.NET4.0E) 401 2 2148074254 

2011-04-05 11:41:44 W3SVC1 MARS 10.57.1.64 GET /eft/Default.aspx - 80 SANOMABP\new.name 10.57.0.161 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.2;+Trident/4.0;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;+.NET4.0C;+.NET4.0E) 200 0 0 

我们已经重新启动应用程序池,我们已经检查了AD的数据,我们没有更多的想法可能是错误的。

+0

的IIS日志显示401(未授权)这大概是导致浏览器重新 - 用适当的AD证书发出请求(导致下一行中的200)。这表明IIS日志中的正确用户名来自客户端PC,而不一定是运行服务器代码的相同机器。你能确认他们是同一台机器还是两台不同的机器? – 2011-04-05 12:12:36

+3

你可以试着看http://support.microsoft.com/kb/946358 – 2011-04-05 12:20:04

+0

当然,它们是两种不同的机器。客户端使用他的机器与IE和IIS在不同的机器上。我会检查你建议的页面。 – Biri 2011-04-05 12:23:23

回答

14

MOVING正确答案自评为了清晰:

@paolo:你可以尝试去support.microsoft.com/kb/946358

+0

为了清晰起见 - 您必须在IIS服务器计算机上使用此解决方法才能正常工作,而不是在客户端计算机上(考虑ASP.NET WinAuth问题)。 – Jarzyn 2014-10-05 23:00:27