【问题标题】:libcurl c/c++ Kerberos authenticationlibcurl c/c++ Kerberos 身份验证
【发布时间】:2013-05-28 21:16:16
【问题描述】:

有人对 libcurl (C/C++) 和 Kerberos 身份验证有任何经验吗?

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

在这个阶段,我正在使用 curl_easy_setopt(curl,CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE) 并且还将 CURLOPT_KRBLEVEL 设置为“私有”。

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

提前感谢您的帮助。

  • 作为补充。我刚刚看到在 libcurl 下 Kerberos 只支持 ftp。我正在搜寻消息来源以尝试确认是否是这种情况。有人知道我们可以用来执行 POST 的任何其他库吗?

【问题讨论】:

  • 我已经做到了。尝试首先使用带有-v --negotiatecurl 可执行文件并报告它所说的内容。它确实支持 Kerberos for HTTP 很好,我熟悉源代码,如果需要可以演示它。
  • 嗨,n.m - 好吧,我使用的 curl 版本似乎不支持 --negotiate.. 这可以解释很多。我现在要回到 curl 站点,尝试获取副本并使用我需要的内容进行重建。 (具有讽刺意味的是,这是我第二次这样做了..)
  • 不..那里没有运气。我可以在构建日志中看到它包括 krb4.h 等。我为我的 kerberos 安装设置了路径。我一直在使用 vs2010 或 nmake 构建 - 但没有成功。据我所知,我已经修改了相关的配置/制作文件,但显然我遗漏了一些东西。一旦我有一个可以工作的内置版本,我就会告诉你。 G
  • 好的 - 设置并准备就绪。只是玩不同的选择,看看我能不能让它继续下去。我在 haxx.se 上看到 Daniel 提到了有关输入无效用户名以触发协商的内容。无论如何,任何有关订购和包含选项的提示都会很棒。谢谢 G
  • Daniel 是对的,这是 curl 可执行文件的错误/缺陷。我忘记了。 curl 必须提供 -u someuser 以进行 任何 类型的身份验证。使用 Kerberos curl 从不同的地方获取用户名,但它仍然需要命令行选项。你可以在那里放任何你想要的用户名。所以说curl -v -u x --negotiate yoursite 看看会发生什么。顺便说一句,我对 Windows 方面不是很熟悉。您可能需要也可能不需要在那里执行kinit 命令,以便curl 进行协商。

标签: c libcurl kerberos


【解决方案1】:

好的 - 对于任何达到这一点的人...... 我下载了这个版本:http://curl.haxx.se/download.html win 32 generic。 它被编译为在 ssh、ntlm 和 kerberos 等下运行。下载包括相关的 DLL,您将需要为需要缓存凭据的任何环境创建应用程序。 如果您想要特定的代码 - 与使用回调、分块等有关,请给我留言,我可以将其转发给您。鉴于 curl 库的灵活性 - 在这里放置大量代码会有点多。启动并运行 curl.exe 后,会有一个 cmd 行开关,可以将等效代码输出到文本文件(尽管它不包含有关任何 writecallback 函数等的信息 - 只是所需的简单设置选项)。感谢 n.m 的帮助 - 非常感谢。 G

【讨论】:

  • 我认为如果您可以在线托管您的代码并将其链接到此处,这将很有用。我目前正在努力解决同样的问题。
  • 我愿意,但代码是几年前为一家公司完成的,我不再有权访问。获取通用代码的最简单方法是使用 cmd 行,因此 - 如果您可以获得 curl 的编译副本以根据需要进行连接,那么您可以根据该配置输出 c++。这将为您提供所需的所有设置选项。
猜你喜欢
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 2017-07-13
相关资源
最近更新 更多