.NET HttpWebRequest Basic Auth / PreAuthenticate是否处理领域值?

时间:2016-09-21 09:31:26

标签: c# httpwebrequest http-authentication networkcredentials

我试图在访问不同的子网址时调用服务于不同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无法解决此问题,但也许我在这里误解了一些内容。

0 个答案:

没有答案