R协商认证(与RCurl或Httr)

时间:2014-10-08 11:36:13

标签: r kerberos rcurl httr

我正在尝试使用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的{​​{1}}选项,但也失败了。

3 个答案:

答案 0 :(得分:1)

使用RCurl,对于NEGOTIATE,请使用:

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

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

答案 1 :(得分:0)

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

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

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

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

禁用基础libcurl库的证书验证

答案 2 :(得分:0)

使用

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

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

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