0

Google Apps Script の UrlFetch を使用して、ダイジェスト認証で保護された 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 -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) )
  },
};

ダイジェスト認証の Challenge-Response メカニズムのため、これは機能しません。

そのような機能を実装している JavaScript ライブラリを使用して UrlFetch で使用できますか? または UrlFetch 自体で直接?

4

2 に答える 2

1

HTTP ダイジェスト認証は、これまでよりも少し複雑です。詳細については、 wiki ページを確認するか、このPython 実装のサンプルを参照してください。

Henrique が言及した Utilities メソッドを使用して、Apps Script でダイジェスト認証を実装できるはずです。アルゴリズムのチャレンジ/レスポンス部分の処理に関しては、ここに示すように、まだ文書化されていない UrlFetchApp オプションmuteHttpExceptionsを使用できます。

于 2012-06-14T02:57:40.310 に答える
0

Utilities.computeDigestbase64Encodeが一括で含まれています。おそらくあなたが探しているものです。

于 2012-06-12T17:55:17.393 に答える