|
Digest認証では、最初にサーバーからnonceを取得し、それとともにユーザー名とパスワードのハッシュ、ダイジェストを送らなければなりません。 nonceが無いといけませんので、初回アクセスからヘッダーにユーザー名とパスワードを容れることはできません。
一方、WebBrowserコントロールはサーバーからDigest認証が必要という返事が返ってくると 問題の確認メッセージを表示してしまいます。 それを防ぐ方法を私は知りません。 たぶん何かあると思いますが。
ですので、WebBrowserコントロール以外の手段でサーバーに接続し、nonceを取得したうえで、 ハッシュ化したユーザー名、パスワードをヘッダーとしてWebBrowserコントロールに渡せばできるはずですが、 リクエストのたびにnc(noncecount)を増やし、ダイジェストを変更する必要があります。
普通、ダイジェストはWebBrowserが自動で生成してくれますが、 手動でヘッダーを設定した場合は情報が足りないため生成できません。 毎回手動でダイジェストを生成し、ヘッダーを設定する必要があります。
できなくはないと思いますが、かなりめんどくさい実装になるでしょう。
認証が必要なページを > (展示室のような場所で起動したいため、オペレータによる認証の作業を入れたくありません) ということ自体が間違っているので、 認証を解除するのが先であろうと思います。
どうしても、というのであれば…。
nonceを取得するにはHttpWebRequest/Responseを使うとよいでしょう。 nonceはWWW-Authenticateヘッダーに入っています。 で、取得したnonceからハッシュを求める手法はRFC2617にあります。 ハッシュ等をAuthorizationヘッダーに含めてWebBrowserに渡します。
リクエストのたびにncを増やし、ダイジェストを更新するのを忘れないように。 また、.NetのDigest認証の実装にはバグがあります。 realmによっては認証できません。 realmが必要な場合、その対策も必要になります。
|