ダイジェスト認証をするには


  2010-12-19 04:27:04  No: 39731

お世話になります。
現在delphiでダイジェスト認証をし、POSTする方法を探しているのですが

D7で行うことは可能でしょうか?
curlやindy10ならできるそうなんですが試した結果難しいので
ほかの方法をご存じの方おりましたらアドバイスお願い
できないでしょうか?

すいませんがよろしくおねがいいたします。


take  2010-12-21 20:45:24  No: 39732

この辺が参考になりませんか?
https://www.petitmonte.com/bbs/answers?question_id=3176

「あと試した結果難しい」とはcurlやindy10を使ったが出来なかった
ということでしょうか?


幸せになりたい  2011-01-01 20:35:03  No: 39733

〈 マコトの部屋? 〉
真琴:「おかしいな…、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階 〉
裕子:《トントントン》「マコトー、起きてるー?  いっしょに初詣でに行こうよ、マコトー」
真琴:「…ん? あ〜ヘンな夢をみてた…、えっ? もうこんな時間」


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加