在模拟后验证WinHttp与远程服务器的连接时出现问题

时间:2019-05-17 16:40:08

标签: windows-authentication winhttp

我遇到安全问题。我不知道它是WinHttp还是Kerberos或Windows安全性。

我们有应用程序的桌面版本和作为服务运行的网络版本。它们共享许多功能所在的许多DLL。这些应用程序的两个版本有时都必须连接到第三台服务器(Hadoop),该服务器被配置为使用Windows服务器作为域控制器(使用Active Directory)使用kerberos进行身份验证。

我们使用WinHttp连接到台式机版本和Web版本的Hadoop服务器。在桌面版本上,我们使用WinHttpSetOption,并将WINHTTP_AUTO_LOGON选项设置为WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW。

对于台式机版本,一切正常。但是,对于Web版本,它不起作用。对于网络版本,在他们登录后,我们具有用于登录的令牌。在使用WInHttp与Hadoop服务器进行通信之前,我们使用登录令牌调用SetThreadToken()来模拟登录用户。获得系统认为用户身份的调用函数将返回登录用户而非服务用户。当我们使用WinHttp发出请求时,它失败并返回错误403和一些文本:

org.apache.hadoop.security.authentication.client.AuthenticationException: GSSException:检测到缺陷令牌(机制级别:GSSHeader找不到正确的标记)

所以,它不喜欢我的令牌。但是,令牌是好的……至少在用户正在运行的计算机上。这些来自客户计算机上的测试。他们有3台机器我需要担心。 #1)带有桌面和服务器应用程序的Windows服务器#2)Hadoop服务器#3)作为域控制器/ Active Directory服务器的Windows Server

有关更多信息,通常,用户使用自动Windows集成身份验证通过浏览器登录服务器应用程序。

对于台式机,用户通过RDP在远程计算机上运行应用程序。

在我们本地的(井,云)测试床上,一切正常。桌面应用程序和服务器应用程序均已正确验证Hadoop。但是配置与客户的配置不同。我们的测试配置有2台计算机#1)带有桌面和服务器应用程序的Windows服务器,它也是域控制器/活动目录服务器,#2)Hadoop服务器

我目前没有资源去尝试重复客户配置,否则我会这么做。

重申一下,桌面应用程序已正确向Hadoop进行身份验证,但是服务器版本(在使用登录令牌对SetThreadToken()进行了模拟之后)未对Hadoop正确进行身份验证。

与在桌面上运行的会话相比,用于模拟的令牌是否不那么受信任?

我可以尝试什么?也许我不明白什么?

0 个答案:

没有答案