我正在尝试扩展我编写的Windows服务以接受来自客户端的kerberos票证,然后将该票证委托给ODBC驱动程序,以便它可以连接到另一台服务器。
ODBC驱动程序在独立方案中可以正常使用kerberos身份验证。也就是说,它可以为当前用户的票证请求和转发就好了。但在我的服务中,我可能会同时处理多个用户。如何接受票证,以便在连接到ODBC驱动程序时它发现并使用正确的用户票证?
我能想到的一种可能性是使用故障单创建一个新进程作为所需用户。但是,如果可能的话,我真的想避免这种情况,因为它不适合我当前的服务架构。
(注意:我的服务是使用Win32 api用C / C ++编写的)
答案 0 :(得分:0)
我找到了自己问题的答案。
在验证安全上下文后,我可以使用ImpersonateSecurityContext
函数。这将导致当前线程作为启动安全上下文的客户端运行。从该线程我可以调用ODBC驱动程序的连接函数,它将作为正确的用户进行身份验证。
http://msdn.microsoft.com/en-us/library/aa375497%28v=vs.85%29.aspx