我正在努力在我的应用程序中启用Kerberos身份验证/委派。
我的设置:客户端是任何网络浏览器。服务器在Windows上运行并托管我的一些服务,Apache / Tomcat作为前端。服务器可以将工作委托给一台或多台计算机上的一个或多个服务。我的服务在Java中运行,但是通过JNI调用C ++代码,C ++代码与数据源建立连接(通过ODBC,用于大多数关系数据源)。目前我正在通过其ODBC驱动程序连接到SQL Server。
我在Apache中设置了mod_auth_kerb,并且能够使用Kerberos对用户进行身份验证。我的问题:如何使用已建立的安全上下文来模拟将调用ODBC驱动程序的SQLDriverConnect调用的线程?我有一个工作原型,它使用LogonUser和ImpersonateLoggedonUser API来登录特定用户(使用她的用户名和密码),并在调用SQL Server ODBC驱动程序上的SQLDriverConnect调用的线程上模拟她。但我不知道如何使用GSSAPI建立的安全上下文/委托上下文(gss_ctx_id_t / gss_cred_id_t)来模拟我的线程。换句话说,如何将GSSAPI句柄转换为SSPI句柄,以便我可以调用ImpersonateSecurityContext或ImpersonateLoggedonUser或类似的Win32 API。
任何帮助将不胜感激。谢谢! 编