R如何使用RCurl或Httr进行身份验证

4
我将为您翻译以下内容:

我正试图使用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=":"))

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


使用“verbose”选项(您正在使用的)产生什么输出? - hrbrmstr
控制台上会发生什么?它如何获取您的用户名和密码? - hadley
3个回答

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

如果内部网站不需要代理,则
httr::GET(ReportsProdURL, 
    use_proxy(""), 
    authenticate(":", "", type="gssnegotiate"))

1

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

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

如果您正在使用自签名证书,您可以运行该命令

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

为了禁用底层libcurl库的证书验证。

1
使用RCurl时,对于NEGOTIATE,请使用以下内容:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接