我试图在访问不同的子网址时调用服务于不同realm values for 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
类只有user,pass和domain属性。
我与PreAuthenticate
的主要问题是,目前尚不清楚缓存凭据的内容 - 目前,从我所看到的情况来看,我假设它每个根URL(CredentialCache
的Uri键)缓存一次凭据,因此realm
无法解决此问题,但也许我在这里误解了一些内容。