[php]curlでダイジェスト認証(Digest-Auth)を通過する

php

phpスクリプトでダイジェスト認証(Digest-Auth)を通過する方法を調べていたのですが、どうやらcurlライブラリを用いるしか方法が見当たりません。その他の方法があれば教えてください。

で本題のダイジェスト認証の通過ですが、ネットで調べて2件だけありました。
Perl Tips | PHP で、ダイジェスト認証(Digest Auth)をする HTTP クライアント
PHPでダイジェスト認証(curl) – ユーウツな雨がふりつづいても雪がハートを曇らせてもドアの中で待っていた君に魔法をかけたいのさ

とにかくまずは CURL が PHP で動けば、あとはプロトコルとして HTTP、HTTPS(SSL/TLS)、FTP、Telnet、LDAP プロトコルでアクセスするクライアントを作れるようだ。 CURL では HTTP だと、GET、POST、PUT、FTP アップロード、フォームからのアップロード、Proxy、cookie、ユーザ名とパスワードによる基本認証/ダイジェスト認証、HTTP(または HTTPS)の認証…と、フルサポートするようだ。

[phpcode]
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD, “$username:$password”);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$str = curl_exec($ch);
curl_close($ch);
[/phpcode]

curlのいいところは、「HTTPS+ダイジェスト認証」みたいな際どいURLなんかにもアクセスできちゃうこと。しかも認証されていないhttpsにアクセスするためのオプションもちゃんとある。以下がそのオプション。

[phpcode]
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
[/phpcode]

これでやりたいことができるようになった!うーん・・・でも世の中的にはBasic認証の方が一般的ですよね。HTTPS+Digest-Authってレアかなぁ。。。


About: uechoco