如果不重新启动,AD 中的组更改不会反映在帐户使用的 IIS 应用程序池中

如果不重新启动,AD 中的组更改不会反映在帐户使用的 IIS 应用程序池中

不确定我是否应该在这里或在 SO 上询问,但这是我的问题 - 我有一个用于 IIS 应用程序池的服务帐户。我最近将它们添加到几个 AD 组中,但新组没有反映 ID。对于普通用户,我们会要求他们注销并再次登录,因此我尝试了以下操作:

  1. 重启应用程序池
  2. 重新启动 IIS
  3. 注销并登录我的本地帐户(我知道这不会有任何效果,但还是尝试了一下)

玩了一会儿后,我们重启了服务器,瞧!权限按预期工作了。这次没问题,但我不想在生产服务器上这样做。

有什么方法可以强制帐户从 AD 中提取更新?

答案1

我没有检查 iis,但应该可以工作:

  1. 下载并解压Sysinternals 登录会话
  2. logonsessions.exe -p在具有管理权限的命令提示符下运行
  3. 此命令的输出必须是您的服务帐户会话的登录会话 ID。(类似于00000000:00009ff1
  4. klist -li 0x<logonid>在此示例中运行哪里9ff1. 检查票证是否存在
  5. 运行klist -li 0x<logonid> purge此命令将清除所选会话的票证
  6. 您可能需要重新启动应用程序池或 iis,但可能没有必要。

PS但我仍然不建议频繁更改服务帐户生产服务器的组成员身份。

答案2

简短回答:重置应该重新验证应用程序池的服务帐户。

我最近意识到,如果我更改了运行应用程序池的服务帐户的密码,我可以回收该应用程序池,停止它,重新启动它,使用 GUI 停止 IIS 服务器,重新启动它,并且旧凭据仍可用于该服务帐户。我预计它会停止工作并要求输入用于应用程序池的新凭据。

但是,正如您所说,重新启动需要重新输入所需应用程序池的新凭据。

话虽如此,另一个可行的解决方案是使用 IISRESET 命令。它强制我们输入新的凭据,而且我确信它还会刷新您情况下的组成员身份。

因此看起来,即使我们重新启动/停止/启动应用程序池,IIS 仍会以某种方式保持安全令牌处于活动状态。

这篇文章很有启发:https://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/

也许它是由 http.sys 处理的,只有 IISRESET 才会重新验证服务帐户?我无法找到此行为的真正确切原因,但您的问题和当前答案证实了我也遇到的行为。

相关内容