ブラウザで使用できる Web サービスがありますが、PHP スクリプトで CURL を使用して呼び出すことはできません。
ここで、送信されたログイン/パスワードの例で使用するコードを示します。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD,'BmN+GP4VBev5tVzJU/altsyXXw0PXYcunbT8F8EatlbpctBXZp1OO2ySQyekZb5729qQPkdwdDBoUxMjBu1mlvv5Bt90GGRwyvEHGTMlT9cjs5YRpBJxEhksVyoL1Z4pwLAq3gKSj+PGW0HQhOSr8h7lyMG+9HJjL7pKeeds+Byn+TYnaium1MsGFg4TiE6Ztvr6rVpdaJSI3einSABuC1PCnNPkbHEdtwdrd8DU2jKcQ1fzderhmuJQE6pls6wwQjWF6sCTUTo/upUHUe0p5GY+7pKCHBXgNEhRhx3JgweiJN8ErxoiPCCIOdOScAEfcgZOgqQDGsJqnhuQ/5fKqg==:passwordOfTheUser');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
var_export(curl_getinfo($ch))."\n";
getInfo の中身を見てみるとこんな感じ
[...]
'request_header' => 'GET /uriNotRelevant.queryString=Data HTTP/1.1
Authorization: Digest username="BmN+GP4VBev5tVzJU/altsyXXw0PXYcunbT8F8EatlbpctBXZp1OO2ySQyekZb5729qQPkdwdDBoUxMjBu1mlvv5Bt90GGRwyvEHGTMlT9cjs5YRpBJxEhksVyoL1Z4pwLAq3gKSj+PGW0HQhOSr8h7lyMG+9HJjL7pKeeds+Byn+TYnaium1MsGFg4TiE6Ztvr6rVpdaJSI3einSABuC1PCnNPkbHEdtwdrd8DU2jKcQ1fzderhmuJQE6pls6w", realm="SVCCompagnonRelay Digest Authentication", nonce="MTM1NDQ4Nzc2NjkzNjoxYTRhMThkOTk5Yjc4OWY1Y2Q0MWQ3NzY3NzRlYzFlYw==", uri="/uriNotRelevant.queryString=Data", cnonce="MTczNDU1", nc=00000001, qop="auth", response="c319b14a40bf54955b764117d7f4bbc3"
Host: example.org
Accept: */*
Cookie: MBLPRDSession=C7B717115F119BAAB5C5BC308DD7FB18; WASMBLPRD2AND=mbltrap21and
',
)
login:password を含むヘッダーが切り捨てられていることがわかります。Header を手動で設定しようとしましたが、DIGEST プロトコルを再現するのは難しいと思いました
私は今何をすべきかわかりません:-(
ダイジェストのログイン サイズを大きくする方法はありますか?
Edit² : 問題を修正しました。私の解決策を参照してください