1

我正在努力在我的应用程序中启用 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。

任何帮助,将不胜感激。谢谢!埃德

4

0 回答 0