使用Windows身份验证的ASP.NET Intranet应用程序报告以前的登录名

时间:2010-09-07 17:44:59

标签: asp.net active-directory windows-authentication

我目前正在对我们公司托管的Intranet应用程序进行故障排除。在此应用程序中,Windows身份验证(集成模式)用于获取当前用户的IPrincipal对象和当前用户的名称(即“DOMAIN \ Joe123”)。我们的域名长度为4个字符,因此将此代码放在一起的个人只抓取包含当前用户登录名的子字符串,如下所示:

 private string GetUserID()
 {

     string userId = "";
     if (User.Identity.Name.ToString().Length > 5)
     {
         userId = User.Identity.Name;
         userId = userId.Substring(5);
     }

     return userId;
 }

我们遇到的问题是我们有一个用户的登录名最近被更改了。我们有两个运行Windows Server 2003 R2的域控制器,我们可以从中管理Active Directory凭据。此用户已在Active Directory中进行了修改,以获得新的登录名,新的电子邮件地址,新的配置文件位置(正在使用的漫游配置文件)以及新的Exchange邮箱/别名(运行Exchange 2007)。这是在给定的个人结婚并更改姓氏后完成的。我在Active Directory或Exchange Management中找不到一个没有反映新登录名的地方。

此用户可以使用新的登录名登录我们的域。但是,通过上面的代码访问的IPrincipal对象仍然报告用户以前的登录名。

到目前为止,她的机器已重新启动,所有cookie都已清除,我们的Intranet应用程序的应用程序池已被回收。我想知道更新IPrincipal对象中返回的Name值可能需要哪些其他步骤。

1 个答案:

答案 0 :(得分:1)

我相信查询会缓存在服务器上。

MS KB:The LsaLookupSids function may return the old user name instead of the new user name if the user name has changed on a domain controller

服务器重启也可以解决这个问题。

相关问题