gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:57:24 24 4
gpt4 key购买 nike

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

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

有人知道这是怎么回事吗?我可以使用某种命令来刷新任何给我这个问题的缓存吗?我的服务器配置错误吗?

注意:我绝对不想重新启动IIS,我的应用程序池或计算机。由于这是生产盒,因此这些并不是真正可行的选择。

影音-

是的,他们的UPN和登录名已更改。还有Mark / Nick ...这是一个生产企业服务器...不能只是重新启动或重新启动IIS。

跟踪(后代):

格伦的回答是不切实际的。在没有大量人使用您的应用程序的低容量服务器中会出现此问题,但会发出足够多的请求以将用户的身份保留在缓存中。 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放在身份验证数据库中!)

最佳答案

我最近也遇到过类似的问题,正如罗伯特·麦克莱恩(Robert MacLean)的answer所述,如果您不以用户身份登录,AviD的组策略更改将不起作用。

我发现更改 LSA查找缓存的大小是正确的,因为MS KB946358无需重启或回收任何应用程序池或服务即可工作。

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

您可能需要研究以下系统调用,例如:

LookupAccountName()

LookupAccountSid()

LsaOpenPolicy()

您可以使用它们编写C++ / CLI(/ Managed-C++)应用程序来查询LSA缓存。

关于asp.net - IIS将旧用户名返回给我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/168946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com