2011-02-15 81 views
0

我試圖擴展我寫的接受來自客戶端的Kerberos票據的Windows服務,然後將該票據委託給ODBC驅動程序,以便它可以連接到另一個服務器它。在使用ODBC驅動程序的服務中實現kerberos委託

ODBC驅動程序在獨立方案中與kerberos身份驗證一起工作良好。也就是說,它可以爲當前用戶請求並轉發票證。但在我的服務中,我可能會一次處理多個用戶。如何接受票證,以便在連接到ODBC驅動程序時發現並使用正確的用戶票證​​?

我能想到的一種可能性是通過使用票證作爲所需用戶創建一個新流程。但是,如果可能,我真的很想避免這種情況,因爲它不適合我當前的服務架構。

(注:我的服務是用C/C++使用Win32 API)

回答

0

我找到了答案,以我自己的問題。

驗證安全上下文後,我可以使用ImpersonateSecurityContext函數。這將導致當前線程作爲啓動安全上下文的客戶端運行。從該線程中,我可以調用ODBC驅動程序的連接函數,並且它將以正確的用戶身份進行身份驗證。

http://msdn.microsoft.com/en-us/library/aa375497%28v=vs.85%29.aspx