我们有最近更改了名称的用户。更改用户的登录名后发生错误的身份验证
假设旧用户名是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的数据,我们没有更多的想法可能是错误的。
的IIS日志显示401(未授权)这大概是导致浏览器重新 - 用适当的AD证书发出请求(导致下一行中的200)。这表明IIS日志中的正确用户名来自客户端PC,而不一定是运行服务器代码的相同机器。你能确认他们是同一台机器还是两台不同的机器? – 2011-04-05 12:12:36
你可以试着看http://support.microsoft.com/kb/946358 – 2011-04-05 12:20:04
当然,它们是两种不同的机器。客户端使用他的机器与IE和IIS在不同的机器上。我会检查你建议的页面。 – Biri 2011-04-05 12:23:23