经过身份验证的HttpWebRequest重定向,持久化凭据?

Phi*_*ins 7 asp.net authentication

我的ASP.NET 2.0应用程序HTTPWebRequest在公司内部网中创建一个站点,该站点使用NTLM身份验证.传递的凭据是针对服务帐户的,该帐户已在域上成功进行身份验证(安全日志确认此情况)

一些缩写代码如下..

HttpWebRequest req = WebRequest.Create(queryUrl) as HttpWebRequest;
NetworkCredential cred = new NetworkCredential(username,
                pwd, domain); 
req.Credentials = cred;

HttpWebResponse response = req.GetResponse() as HttpWebResponse;
Run Code Online (Sandbox Code Playgroud)

作为请求的一部分,有一些重定向(在同一个域内)到最终响应 - 在我的开发机器上处理正常(Windows 2k)

当从我的部署环境(Windows 2k3)创建此请求时,我从站点返回401 Unauthorized错误,似乎在返回第一个重定向代码(301 Moved)之后,我的请求对象尝试遵循重定向.

所以基本上,有没有人知道围绕重定向的经过身份验证的HttpWebRequests的任何问题?

PS - 明显的解决方法是简单地请求重定向到的页面 - 但负责内部网站点的管理员希望通过重定向我通过特定页面来监控我的应用程序的使用情况.

Jar*_*lls 12

HttpWebRequest在重定向之间重用凭据,您需要使用凭证缓存.如果您只是分配一个NetworkCredentials对象,它将仅用于第一个请求.

这是一个例子:

HttpWebRequest req = WebRequest.Create(queryUrl) as HttpWebRequest;
NetworkCredential cred = new NetworkCredential(username, pwd, domain); 
var cache = new CredentialCache {{queryUrl, "Ntlm", cred}};
req.Credentials = cache;
HttpWebResponse response = req.GetResponse() as HttpWebResponse;
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

8456 次

最近记录:

14 年,1 月 前