【发布时间】:2011-02-07 06:42:08
【问题描述】:
我最近向question 询问了有关服务器返回重定向时的 NetworkCredential 和 HttpWebRequest.Credentials 的问题。我确定构建 NetworkCredential 实例的 CredentialCache 适用于我的场景。现在我有一个临时方法,它使用硬编码的所有域名构建一个 CredentialCache。它工作得很好。
CredentialCache cache = new CredentialCache();
cache.Add(new Uri("http://example.com"), "Negotiate", loginCredentials);
cache.Add(new Uri("http://redirected.example.com"), "Negotiate", loginCredentials);
request.Credentials = cache;
现在,我需要使它更灵活。重定向的整个想法是为了在服务器上进行负载平衡。在调用 HttpWebRequest.GetResponse() 之前,客户端不会确切知道它会被重定向到哪里。构建 CredentialCache 以包含遇到的每个重定向服务器的首选方法是什么?另外,让这件事变得如此困难的原因是什么?为什么单个 NetworkCredentials 实例不能满足每个重定向的 HttpWebRequest.Credentials?是否会引入安全漏洞以跨重定向重用凭据?
谢谢。
【问题讨论】:
标签: c# .net authentication redirect