如何以编程方式清除Kerberos票证缓存

时间:2010-02-15 14:13:13

标签: c# c++ windows kerberos

有没有人知道如何清除本地计算机上的Kerberos票证缓存 - 使用托管\ unmanaegd代码?

提前致谢!

4 个答案:

答案 0 :(得分:5)

我认为您需要在使用LsaCallAuthenticationPackageKERB_PURGE_TKT_CACHE_REQUEST之后使用LsaConnectUntrusted拨打LsaRegisterLogonProcess。对不起,没有具体细节,但我没有我的代码...

答案 1 :(得分:2)

最简单的方法是获取Microsoft的KList的源代码(包含在平台SDK \ Samples中),并像他们一样...

答案 2 :(得分:2)

有一个"托管C#"在https://github.com/ErtiEelmaa/StackOverflow/blob/master/GroupPolicyUtilities.cs

使用pInvoke清除kerberos票证的示例

这里复制/粘贴的时间太长了。由于pInvoke中的结构无效(例如某人虽然C ++ LONG等于C#LONG和yada-yada),但是,我已经测试了这个,并且它对我有用。

另外,我注意到Windows Server 2003 klist.c 在PurgeTicket中几乎没有错误:

  • 它没有清理响应
  • 它会检查相同的"结果"而不是检查"结果"然后" SUB-RESULT"

答案 3 :(得分:0)

简单,愚蠢的方式:

system("kdestroy");

或者如果您想更合法,只需查看kdestroy实施的source即可。 krb5_cc_destroy()似乎是相关的函数调用。