使用 Windows 锁定屏幕后删除了 Kerberos 缓存票证

Kerboros cached ticket deleted after using Windows lock screen

有没有办法阻止 Windows 进入锁屏后删除 Kerboros 缓存的票证。

首次登录 Windows 时,klist.exe 显示 2 个缓存票证。但是,在发生 Windows 锁屏事件后,klist.exe 显示 0 个缓存票。

提前致谢。

这是设计使然。无法阻止 Kerberos 服务票证在屏幕锁定后被清除。一旦您再次访问受 Kerberos 保护的新资源,就会进行新的身份验证过程,并且会出现新的票证。了解 Kerberos 票证之间的区别很重要 - 有两种类型 - 票证授予票证 (TGT) 和服务票证 (ST)。您可以确保 Kerberos TGT 保留在客户端缓存中并且在屏幕锁定后不会被清除如果您的计算机正在加入 Active Directory 域 您进行所谓的组策略更改以更改行为(请参阅下面的注释)。如果您不是 Active Directory 管理员,则必须联系他们让他们为您执行此操作。要在屏幕锁定后保留 TGT,请打开组策略管理控制台编辑器,找到 linked 到计算机的 GPO,并将策略设置为不需要与域控制器联系即可解锁计算机。这样做将确保机器保留缓存的 Kerberos TGT 以进行重新身份验证。即使您以这种方式配置组策略,为您的 Web 服务器颁发的 Kerberos 服务票证也不会保留。同样,在这种情况下,在解锁工作站后,只有 TGT 保留在机器 Kerberos 缓存中,不会保留任何服务票据(例如为网络资源颁发的票据)。但对您来说,这可以让您更轻松地申请 ST,因为不必重新申请 TGT。虽然您可以在应用程序服务器端尽可能多地尝试围绕此进行编程,但实际上没有办法从应用程序端控制客户端的 Kerberos 整体安全行为。

这部分答案下方的所有内容都是针对后续评论进行的编辑。请避免对默认域控制器策略进行任何编辑,因为该策略仅适用于域控制器。请注意,每当我个人在 Active Directory 域中进行新的组策略更改时,除非我非常熟悉特定设置,否则我喜欢创建一个全新的 GPO,根据设置更改命名它制作,然后 link 它到计算机或用户对象所在的 OU。或者,您也可以 link 域级别的 GPO,如果您认为更改被认为是 "safe" 并且不会对所有人造成负面影响。

  1. 为此,请打开组策略管理控制台编辑器,然后创建一个新的 GPO。
  2. 将其命名为允许缓存登录
  3. 编辑允许的缓存登录 GPO。
  4. 导航到计算机配置 > 策略 > Windows 设置 > 安全设置 > 本地策略 > 安全选项 > 并配置以下两项:

Interactive logon: Number of previous logons to cache (in case Domain Controller is not available): 1 logons

Interactive logon: Require Domain Controller authentication to unlock workstation: DISABLED

接下来,重新启动客户端工作站 2-3 次。从技术上讲,您可以 运行 命令 gpupdate /force 来执行此操作,但我发现对于某些设置,尤其是这个设置,客户端工作站不仅需要重新启动,而且有时 2 次,甚至 3 次重新启动,这是由于另一个名为 快速登录优化 的 GPO 设置。无论如何,那个故事是另一个话题。