最初に NTLM プロトコルを使用して認証し、基本認証方式の後に認証するように構成されたプロキシがあります。どちらの方法も正しく機能します。NTLM アクセスが有効になっている場合、すべてのインターネット ブラウザー (IE、Chrome、および Firefox) が機能します。NTLM アクセスが禁止されている場合、FF だけがこの状況を正しく処理します。FF は最初に NTLM 認証のダイアログを表示し、ダイアログの [キャンセル] ボタンを押すと、2 つ目の Basic 方式の認証ダイアログが表示されます。正しいログインとパスワードを入力することで、FF はインターネットにアクセスします。他のブラウザは、ログインとパスワードを使用して認証できません。
基本認証方式を使用してプロキシ経由で動作するプログラムを作成するタスクがあります。WebProxyクラスを使用する必要があります。
認証するための 2 つの異なる方法を作成しました。1 つ目は、NetworkCredentialクラス インスタンスを で直接使用することWebProxy
です。
static private IWebProxy GetProxy00(string proxy_address, string proxy_login, string proxy_password) {
WebProxy proxy = new WebProxy(proxy_address, true);
proxy.Credentials = new NetworkCredential(proxy_login, proxy_password);
proxy.UseDefaultCredentials = false;
return proxy;
}
2 番目の方法では、CredentialCacheクラスを使用します
static private IWebProxy GetProxy01(string proxy_address, string proxy_login, string proxy_password) {
CredentialCache cache = new CredentialCache();
WebProxy proxy = new WebProxy(proxy_address, true);
cache.Add(proxy.Address, "Basic", new NetworkCredential(proxy_login, proxy_password));
proxy.Credentials = cache;
proxy.UseDefaultCredentials = false;
return proxy;
}
両方の方法は、次のコードを使用してテストされます
string proxy_login = "here is login";
string proxy_password = "here is password";
string proxy_address = "here is proxy address";
WebRequest req = WebRequest.Create("http://www.google.com");
req.Proxy = GetProxy00(proxy_address, proxy_login, proxy_password);
WebResponse res = req.GetResponse();
どちらもSystem.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.
例外をスローします。
WebProxy クラスを使用してプロキシ経由で Basic 認証方式で認証するにはどうすればよいですか?