【问题标题】:How to programmatically clear the Kerberos ticket cache如何以编程方式清除 Kerberos 票证缓存
【发布时间】:2010-02-15 14:13:12
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: c# c++ windows kerberos


    【解决方案1】:

    我相信您需要在使用LsaConnectUntrustedLsaRegisterLogonProcess 之后使用KERB_PURGE_TKT_CACHE_REQUEST 调用LsaCallAuthenticationPackage。抱歉没有具体细节,但我没有我的代码...

    【讨论】:

    • 您好,效果很好。另外,有没有一种管理方法可以做到这一点?
    • 为托管代码包装 pInvokes。看看这些是否在 pInvoke.Net 上,如果没有,则该站点有大量信息。
    • 是的,PInvoke 有效,但我想知道点网框架中是否有内置类可以做到这一点。
    • @rusw1 请原谅之前无关的评论。这是在 SO 中联系用户的唯一方式 :)。我会在收到 Christopher_G_Lewis 的回复或在 8 月 29 日之前将其删除。如果您想在 8 月 29 日之前删除评论,请联系我。谢谢!
    【解决方案2】:

    最简单的方法就是拿微软的KList的源码(包含在平台SDK\Samples中),照着做……

    【讨论】:

      【解决方案3】:

      https://github.com/ErtiEelmaa/StackOverflow/blob/master/GroupPolicyUtilities.cs 有一个使用 pInvoke 清除 kerberos 票证的“托管 C#”示例

      此处复制/粘贴的时间太长。由于 pInvoke 中的结构无效(例如,有人认为 C++ LONG 等于 C# LONG 和 yada-yada),所以花了一些时间,但是,我已经测试了这个,它对我有用。

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

      • 它不会清理响应
      • 它会仔细检查相同的“RESULT”,而不是先检查“RESULT”然后再检查“SUB-RESULT”

      【讨论】:

      • 谢谢 - 首先是参考(虽然它是 PInvoke,所以没有完全管理......),其次是 MSFT 的 KList 错误。我会检查我的代码并修复错误。
      【解决方案4】:

      简单而愚蠢的方法:

      system("kdestroy");
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-23
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        相关资源
        最近更新 更多