1

異なるサブ URL にアクセスするときに、基本認証の異なるレルム値を提供するサーバーを呼び出そうとしています。

私がこれまで持っていたクライアント コードは、これを処理する必要はありませんでした。資格情報を設定し、 を設定するだけrequest.PreAuthenticate = true;で、通信のためにすべてが正常に機能しました。

    var request = (HttpWebRequest)WebRequest.Create("http://localhost:8877/" + suburl);
    request.Method = WebRequestMethods.Http.Get;
    request.Credentials = new System.Net.NetworkCredential("User", "Pass");
    request.CookieContainer = cookies;
    request.PreAuthenticate = true;


        using (var response = request.GetResponse())
        {
            UseResponse(response);
        }

これにより、最初の 401 応答が自動的に処理され、その後の各要求で資格情報が転送されます。

私が今しなければならないことは、ヘッダーrealmで返された値に基づいて資格情報を何らかの形で提供することです。401 / WWW-Authenticate:

これらのクラスまたは を使用するバージョンで、これに対する組み込みのサポートはありCredentialsCacheますか? このNetworkCredentialクラスには、ユーザー、パス、およびドメインのプロパティのみがあります。

私が抱えている主な問題PreAuthenticateは、資格情報をキャッシュしているものが不明であることです-現在、私が見ることができることから、ルート URL (の Uri キー) ごとに資格情報を 1 回キャッシュすると想定CredentialCacheしているため、これではうまくいきませrealmんが、ここで何か誤解しているかもしれません...

4

0 に答える 0