【问题标题】:R negotiate authentication (with RCurl or Httr)R 协商身份验证(使用 RCurl 或 Httr)
【发布时间】:2014-12-03 01:23:44
【问题描述】:

我正在尝试使用 RCurl 从 R 访问 Web 服务。 Web 服务使用 Kerberos 身份验证。

在命令行上使用 curl 进行测试可以正常工作,例如

curl --negotiate -u: http://reuxeuls199:8084/reports-ws/api/r/1.0/vesselTracking?region-name=ECC&start-date-time=01/10/2014

但是在 R 中我无法让它工作。

ReportsProdURL <- "http://reuxeuls199:8084/reports-ws/api/r/1.0/vesselTracking?region-    name=ECC&start-date-time=01/10/2014"
URL <- getURL(ReportsProdURL, verbose=TRUE, .opts=curlOptions(username=":"))

我也尝试使用设置为gssnegotiatehttpauth 选项,但也失败了。

【问题讨论】:

  • 使用verbose 选项(您正在使用的)产生什么输出?
  • 控制台会发生什么?它如何获取您的用户名和密码?

标签: r kerberos rcurl httr


【解决方案1】:

使用

httr::GET(ReportsProdURL, 
    authenticate(":", "", type="gssnegotiate"))

如果内部网站不需要代理,那么

httr::GET(ReportsProdURL, 
    use_proxy(""), 
    authenticate(":", "", type="gssnegotiate"))

【讨论】:

    【解决方案2】:

    我还没有找到如何使用 RCurl,但你可以使用 httr

    GET("https://host.domain/",authenticate("username","password","gssnegotiate"))
    

    如果您使用的是自签名证书,您 can run the command

    set_config( config( ssl.verifypeer = 0L ) )
    

    禁用底层 libcurl 库的证书验证

    【讨论】:

      【解决方案3】:

      对于 RCurl,对于 NEGOTIATE,使用这个:

      getURL("https://yourAddress", userpwd=":", httpauth = 4)
      

      数字 4 基于curl.h 中定义的常量位掩码。有效选项定义为here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-18
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 2023-03-18
        相关资源
        最近更新 更多