繁体   English   中英

使用Kerberos身份验证模拟用户时建立ODBC连接

[英]Making an ODBC connection when impersonating an user using Kerberos authentication

我的客户端应用程序/浏览器使用Kerberos针对我的服务器进行身份验证。 该服务器运行Apache / Tomcat,并且与我在该服务器上运行的服务进行通信。 我的服务可以将工作分配到另一台计算机上的另一服务,因此我们需要设置约束委派。 我在服务器(服务器计算机或另一台计算机上)上的服务需要使用ODBC与SQL Server数据库进行对话。 我想模拟最终用户(在AD中)。 从在线阅读到模拟最终用户,似乎我需要做的就是在模拟最终用户的线程上对ODBC驱动程序进行SQLDriverConnect调用。

如果用户已经通过身份验证,并且可以在服务中获得一些令牌(TGT?),那么我需要在服务线程中调用哪些API来模拟最终用户? 我将ImpersonateLoggedOnUser和ImpersonateSecurityContext视为可能的选项,但我真的不知道在我的情况下适用哪些选项,以及在这里我需要什么具体的票证/令牌。

另外,我看到当用户已经通过身份验证时,SetThreadToken也可以是一个选项。 是吗?

我的服务是C ++,环境是Windows(7或Server)。

在不验证此流程的情况下,您应该尝试以下操作:

先决条件:如果要诉诸约束委派,则将需要Java8。没有其他选择。 Java 6不受限制的作品。

客户端SPNEGO / Kerberos => Tomcat / Server 1( 使用JGSS提取委托凭证 )=> Tomcat / Server 1使用委托凭证获取下一层的服务票证=> C ++支持的Server 1(使用SSPI提取委托凭证)=>模拟等等。

请注意,您不能从Java调用ODBC,而只能从C / C ++调用ODBC,因此,如果您想将两者都保留在同一台计算机上,请获取host /的服务凭单,然后继续使用C ++和ODBC。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM