お世話になります。
現在delphiでダイジェスト認証をし、POSTする方法を探しているのですが
D7で行うことは可能でしょうか?
curlやindy10ならできるそうなんですが試した結果難しいので
ほかの方法をご存じの方おりましたらアドバイスお願い
できないでしょうか?
すいませんがよろしくおねがいいたします。
この辺が参考になりませんか?
https://www.petitmonte.com/bbs/answers?question_id=3176
「あと試した結果難しい」とはcurlやindy10を使ったが出来なかった
ということでしょうか?
〈 マコトの部屋? 〉
真琴:「おかしいな…、Postでは何でこんなコトが…、どうして?」
春子:「ん? 何を悩んでるのかな?」
真琴:「それが…、Indyで Digest認証なんだけど…、Getならば なんとかコレでうまくいったのよ、でもPostではダメなの」
procedure TForm1.IdHTTP1SelectAuthorization(Sender: TObject;
var AuthenticationClass: TIdAuthenticationClass;
AuthInfo: TIdHeaderList);
begin
// Digest認証が必要な場合には自動的にセットされるので指定しなくてもOK
AuthenticationClass := TIdDigestAuthentication;
end;
procedure TForm1.IdHTTP1Authorization(Sender: TObject;
Authentication: TIdAuthentication; var Handled: Boolean);
begin
// 1回目のアクセスで Digest認証が必要な場合、このイベントハンドラが呼ばれるので、
// 認証用の Username, Password などをセット
Authentication.Username := {ユーザー名};
Authentication.Password := {パスワード};
TIdDigestAuthentication(Authentication).Uri := TIdHTTP(Sender).Request.URL;
TIdDigestAuthentication(Authentication).Method := TIdHTTP(Sender).Request.Method;
Handled := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sURL, s: string;
begin
sURL := {Digest認証するページURL};
IdHTTP1.Request.Username := '';
IdHTTP1.Request.Password := '';
s := IdHTTP1.Get(sURL); // 最初は認証なしで1回目のアクセス
s := IdHTTP1.Get(sURL); // Digest認証付きで2回目のアクセス
Memo1.Text := s;
end;
春子:「そのやり方で、Postでは認証できなかったの? 試した場所はドコ?」
真琴:「そう、Postの場合はダメ、試した場所はココ、そのDigest認証の解説を何度も読んで、ヘッダのパラメータを色々変えたりして試してたの、そうしたら…」
http://x68000.q-e-d.net/~68user/net/http-auth-2.html (Digest認証の解説ページ)
Digest 認証の例: http://X68000.q-e-d.net/~68user/net/sample/http-auth-digest/secret.html
(ユーザ名: hoge、パスワード: fuga で閲覧できます)
春子:「ナニか分かったのかな?」
真琴:「うん、1回目のPostのあとで、すぐに2回目の認証用のPostをすると全然ダメだけど…」
春子:「だけど?」
真琴:「2回目のPostをする前に15秒以上待つと認証が出来るってコトを偶然見つけたの」
春子:「あら、そうなの? 15秒間待つとPostでも認証OK? じゃぁ それで解決ね、良かったじゃない」
真琴:「えー、ちっとも良くないよ、だって、それって変よね?」
春子:「まぁね、確かに変かもしれないけど」
真琴:「絶対オカシイよ、なんで15秒も待たなくちゃいけないの? これじゃ まだ解決になってないよ」
春子:「ふ〜ん、ナルホドね、今はそれで悩んでたのかぁ…、ところで、indy10?」
真琴:「そう、Indy10.550、…ねぇ、ハルコさん、ナニか知ってるの? 知ってたら教えてよ」
春子:「でも悩んでイロイロと調べたおかげで realm や nonce など、Digest認証の仕組みを詳しく勉強出来たんじゃない?」
真琴:「それはそうだけど…」
春子:「じゃぁ、あと少し、IdHTTP.HTTPOptions の hoInProcessAuth について調べてごらん? きっと幸せになれると思うよ」
真琴:「え? hoInProcessAuth? なんのオプション? よく分からないけど、じゃぁ試しに True に…」
春子:「どうかな?」
真琴:「あっ、バッチリ!! GetもPostも 1回目で認証が出来ちゃう、 そうかぁ、コレだったのね」
春子:「そのOptionを付けると Indyが勝手に認証用の再アクセスをしてくれるの、どう?幸せになれた?」
真琴:「うん、ありがとう、ハルコさん、 …あれ? だけどアタシ、何でハルコさんと話をしてるの?」
春子:「なによ、さっきからずっと話してたのに、今更それはないでしょ?」
真琴:「でも、ハルコさんは別の宇宙へ行って、高校生になってるハズでは? 一体いつ戻ってきたの?」
春子:「え? その奇想天外な話は何なの? アタシはどこにも行ってないよ?」
真琴:「そんな…、だって…」
〈 ダイヤモンドヘッド 1階 〉
裕子:「明けましておめでとうございまーす、…マコトは?」
勝爺:「おう、おめでとう、えっとマコトは…まだ2階の自分の部屋かな、寝てたら起こしてくれねぇか?」
裕子:「えー? まだ寝てるの?」
〈 ダイヤモンドヘッド 2階 〉
裕子:《トントントン》「マコトー、起きてるー? いっしょに初詣でに行こうよ、マコトー」
真琴:「…ん? あ〜ヘンな夢をみてた…、えっ? もうこんな時間」
ツイート | ![]() |