在访问不同的子 URL 时,我正在尝试调用为 Basic Auth 提供不同领域值的服务器。
到目前为止,我的客户端代码不必处理这个问题,它只是设置凭据,设置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 键CredentialCache
)缓存一次凭据,所以有没有办法realm
解决这个问题,但也许我在这里误解了一些东西......