libcurl c/c++;Kerberos认证

libcurl c/c++;Kerberos认证,c,libcurl,kerberos,C,Libcurl,Kerberos,有人有过libcurl(C/C++)和Kerberos身份验证的经验吗 我可以设置所有内容并发布数据-但是,现在我们已经打开了SSO(通过JBoss服务器上的SPNEGO),我无法正确地进行身份验证,授权被降级为Basic 在这个阶段,我使用curl_easy_setopt(curl,CURLOPT_HTTPAUTH,CURLAUTH_gssnegate),并将CURLOPT_KRBLEVEL设置为“private” 查看wireshark中的头文件,curl的响应没有提供任何凭据,这在JBos

有人有过libcurl(C/C++)和Kerberos身份验证的经验吗

我可以设置所有内容并发布数据-但是,现在我们已经打开了SSO(通过JBoss服务器上的SPNEGO),我无法正确地进行身份验证,授权被降级为Basic

在这个阶段,我使用curl_easy_setopt(curl,CURLOPT_HTTPAUTH,CURLAUTH_gssnegate),并将CURLOPT_KRBLEVEL设置为“private”

查看wireshark中的头文件,curl的响应没有提供任何凭据,这在JBoss服务器上引发了EncryptionKey异常。我能够使用缓存的凭据和httprequest对象通过.NET在服务器上进行身份验证。唯一的问题是我们不能在这个项目上使用.NET

提前感谢您的帮助

  • 作为补充。我刚刚看到,在libcurl下,Kerberos只支持ftp。我正在追踪源头,试图确认情况是否属实。有人知道我们可以使用任何其他库来执行我们的帖子吗

    • 好的-对于任何达到这一点的人。。。 我下载了这个版本:win32通用。 它被编译为在ssh、ntlm和kerberos等环境下运行。下载包括相关的DLL,您需要为任何需要缓存凭据的环境创建应用程序。
      如果您需要特定的代码-关于使用回调、分块等,请给我一行,我可以转发给您。考虑到curl库的灵活性,只需在这里删除大量代码就有点过分了。一旦curl.exe启动并运行,就有了一个cmd行开关,可以将等效代码输出到文本文件中(尽管它不包括有关任何writecallback函数等的信息,只是需要简单的设置选项)。感谢n.m.的帮助-非常感谢。我已经做了。尝试将
      curl
      可执行文件与
      -v一起使用--首先协商
      ,并报告它所说的内容。它确实支持Kerberos for HTTP。很好,我熟悉源代码,如果需要可以演示它。您好,n.m-嗯,我使用的curl版本似乎不支持--协商。。这可以解释很多。我现在回到curl站点,尝试用我需要的源代码创建一个拷贝并重建。(具有讽刺意味的是,这是我第二次完全这样做了……)不。。在那里一点运气都没有。我可以在构建日志中看到它包括krb4.h等。我为kerberos安装设置了路径。我一直在使用vs2010或nmake构建,但没有成功。据我所知,我已经修改了相关的config/make文件,但显然我遗漏了一些东西。一旦我有了一个可以工作的内置版本,我会让你知道。Gok-设置并准备就绪。只是玩弄不同的选择,看看我能不能让它继续。我在haxx.se上看到Daniel提到了一些关于输入无效用户名以触发协商的内容。无论如何,任何关于订购和包含选项的提示都是非常好的。感谢GDaniel是对的,这是curl可执行文件的一个bug/缺陷。我忘了<要进行任何类型的身份验证,必须提供code>curl
      -u someuser
      。使用Kerberos
      curl
      从不同的位置获取用户名,但它仍然需要命令行选项。你可以把你想要的用户名放在那里。所以说,
      curl-v-ux——协商你的站点
      ,看看会发生什么。顺便说一句,我不太熟悉Windows方面的东西。您可能需要也可能不需要在那里执行
      kinit
      命令,以便
      curl
      进行协商。如果您可以在线托管代码并将其链接到此处,我认为这将非常有用。我现在也在努力解决这个问题。我会的,但代码是几年前为一家公司编写的,我不再有访问权限。获取通用代码最简单的方法是使用CMD线,因此如果您可以根据需要获得卷曲的编译副本以连接,那么您可以基于该配置输出C++。这将为您提供所需的所有设置选项。