0

我正在尝试使用 Google Apps 脚本的 UrlFetch 访问受 Digest Authentication 保护的 URL。

我设法使用基本身份验证访问 URL:

 var options =
{
  "method" : "get",
  "headers" : {
    "Authorization" : "Basic <Base64 of user:password>"  
  },
};

var response = UrlFetchApp.fetch("http://www.example.com/service/using/basic", options);

我设法根据文档中的示例使用 OAuth 进行访问。

现在的问题是我需要与正在实施 Digest 的站点具有相同的功能。我可以使用以下 curl 访问它:

curl -v --digest --user user:password http://www.example.com/service/using/digest

更新

如果我尝试简单地打电话

var options =
{
  "method" : "get",
  "headers" : {
    "Authorization" : "Digest " + Utilities.base64Encode( Utilities.computeDigest(user:password) )
  },
};

由于 Digest Authentication 的 Challenge-Response 机制,它不起作用。

我可以使用任何实现此类功能的 JavaScript 库来使用 UrlFetch 吗?还是直接通过 UrlFetch 本身?

4

2 回答 2

1

HTTP Digest 授权比您目前所拥有的要复杂一些。查看wiki 页面或查看此示例 Python 实现以获取更多信息。

使用 Henrique 提到的 Utilities 方法,应该可以使用 Apps 脚本实现摘要身份验证。至于处理算法的挑战/响应部分,您可以使用尚未记录的 UrlFetchApp 选项muteHttpExceptions,如此处所示

于 2012-06-14T02:57:40.310 回答
0

有内置的Utilities.computeDigestbase64Encode。这可能是您正在寻找的。

于 2012-06-12T17:55:17.393 回答