You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework中WindowsIdentity导致Kerberos会话无法清除的Bug

WindowsIdentity.RunImpersonated 导致Kerberos会话残留问题
  • 在C#中使用WindowsIdentity.RunImpersonated并传入SafeAccessTokenHandle,释放该Handle后执行C:\klist sessions命令,已释放的SafeAccessTokenHandle对应的Kerberos会话仍会被列出
  • 若以服务形式运行,这类会话可能累积至数千个才会被系统清除;但如果注释掉WindowsIdentity.RunImpersonated代码再释放用户令牌,执行klist sessions时会话会被正常清理
  • 推测WindowsIdentity.RunImpersonated静态方法内部存在引用持有,导致SafeAccessTokenHandle无法被及时清理

复现代码

using (var usertoken = ReportSecurityCredentials.FileCopyUserCredentials.LogonUser(ReportSecurityCredentials.LogonTypeSecurity, SimpleImpersonation.LogonProvider.Negotiate))
{
      WindowsIdentity.RunImpersonated(usertoken, () =>
      {
          // 测试逻辑
      });
}

执行命令

klist sessions

预期结果

模拟用户的Kerberos会话不应出现在会话列表中

内容的提问来源于stack exchange,提问作者David Revell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:22:01