asp.net – IIS将旧用户名返回到我的应用程序

这里是我的情况。我创建了一个应用程序,使用集成Windows身份验证为了工作。在Application_AuthenticateRequest()中,我使用HttpContext.Current.User.Identity获取我的网站的用户的当前WindowsPrincipal。

在这里有趣的部分。我们的一些用户最近结婚了,他们的名字改变了。 (即用户的NT登录从jsmith更改为jjones),当我的应用程序对它们进行身份验证时,IIS会传递他们的OLD LOGIN。我继续看到jsmith传递到我的应用程序,直到我重新启动我的SERVER!注销客户端不工作。重新启动应用程序池不起作用。只有完全重启。

有谁知道这里发生了什么?是否有某种命令,我可以使用刷新任何缓存给我这个问题?我的服务器配置不正确吗?

注意:我绝对不想重新启动IIS,我的应用程序池或机器。由于这是一个生产箱,这些不是真正可行的选择。

AviD –

是的,他们的UPN和他们的登录名一起改变。和Mark / Nick …这是一个生产企业服务器…它不能只是重新启动或IIS重新启动。

跟进(为后代):

Grhm的答案是spot-on。在您没有很多人使用您的应用程序但在缓存中保留用户身份的足够请求的低容量服务器中,此问题会弹出。 KB的关键部分,似乎描述为什么缓存项目不刷新认10分钟后是:

The cache entries do time out,however chances are that recurring
queries by applications keep the existing cache entry alive for the
maximum lifetime of the cache entry.

我不确定在我们的代码是什么导致这(循环查询),但对我们工作的决议是将LsaLookupCacheExpireTime值从看似淫秽认值1周,只是几个小时。这对我们来说,将用户在真实世界中受到影响的概率降低到基本上为零,但同时不会导致针对我们的目录服务器的大量SID名称查找。如果应用程序通过SID查找用户信息而不是将用户数据映射到文本登录名,则更好的解决方案是IMO。 (注意,供应商!如果您在应用程序中依赖于AD身份验证,则需要将SID放入您的身份验证数据库!)

解决方法

我最近有类似的问题,如罗伯特·麦克莱恩的 answer中所述,AviD的组策略更改不工作,如果你不是作为用户登录

我发现更改LSA查找缓存大小,如描述是MS KB946358工作,而不重新启动或回收任何apppool或服务。

我发现这是一个类似问题的答案:Wrong authentication after changing user’s logon name

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...