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

但是在 RI 中无法使其工作。

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,但这也失败了。

4

3 回答 3

3

使用

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

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

httr::GET(ReportsProdURL, 
    use_proxy(""), 
    authenticate(":", "", type="gssnegotiate"))
于 2018-05-09T02:54:31.567 回答
1

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

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

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

于 2016-11-04T15:53:48.457 回答
1

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

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

如果您使用的是自签名证书,您可以运行命令

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

禁用底层 libcurl 库的证书验证

于 2015-10-15T01:57:32.323 回答