2010-02-15 36 views

Trả lời

4

Tôi tin rằng bạn cần thực hiện cuộc gọi đến LsaCallAuthenticationPackage bằng cách sử dụng KERB_PURGE_TKT_CACHE_REQUEST sau khi sử dụng LsaConnectUntrusted hoặc LsaRegisterLogonProcess. Xin lỗi không có chi tiết cụ thể, nhưng tôi không có mã của tôi cho việc này ...

+0

Cảm ơn rất nhiều !!! – rkellerm

+0

Xin chào, Nó hoạt động tuyệt vời. Ngoài ra, có cách nào được quản lý để thực hiện điều đó không? – rkellerm

+0

Gói trong pInvokes cho mã được quản lý. Xem nếu đây là tại pInvoke.Net, nếu không, trang web đó đã có tấn thông tin. –

0

Các đơn giản, cách ngu ngốc:

system("kdestroy"); 

Hoặc nếu bạn muốn trở thành hợp pháp hơn, chỉ cần kiểm tra source của một thi kdestroy. krb5_cc_destroy() dường như là cuộc gọi hàm có liên quan.

+0

Cảm ơn rất nhiều !!! – rkellerm

1

Cách đơn giản nhất là lấy mã nguồn của KList của Microsoft (Bao gồm trong SDK nền tảng \ Mẫu) và thực hiện giống như chúng ...

1

có một "quản lý C#" ví dụ về tẩy Kerberos vé sử dụng PInvoke tại https://github.com/ErtiEelmaa/StackOverflow/blob/master/GroupPolicyUtilities.cs

Way quá lâu để sao chép/dán ở đây. Phải mất một thời gian kể từ khi cấu trúc trong pInvoke là không hợp lệ (ví dụ như ai đó mặc dù C++ LONG bằng C# LONG và yada-yada), tuy nhiên, tôi đã thử nghiệm cái này, và nó làm việc cho tôi.

Ngoài ra, tôi nhận thấy rằng các máy chủ Windows 2003 klist.c có vài lỗi trong PurgeTicket:

  • nó không dọn dẹp phản ứng
  • nó đúp kiểm tra cùng "RESULT", thay vì kiểm tra "RESULT" và sau đó "SUB-RESULT"
+0

Cảm ơn bạn - đầu tiên để tham khảo (mặc dù đó là PInvoke, do đó, không chính xác quản lý ...) và thứ hai cho lỗi KList của MSFT. Tôi sẽ kiểm tra mã của tôi và sửa lỗi nếu chúng ở đó. – rkellerm

Các vấn đề liên quan