Windows身份验证当前用户模拟401未经授权

时间:2013-02-21 15:00:22

标签: asp.net asp.net-mvc iis-7 windows-server-2008

我有一个发布RSS源的Intranet,我正在尝试从Windows域环境中同一IIS服务器上托管的另一个Intranet站点使用该RSS源。

两个网站都有

<authentication mode="Windows">

禁用匿名身份验证。

在本地开发(Windows Auth但不在域上)以下工作:

var request = HttpWebRequest.Create(feedUrl);
request.Credentials = CredentialCache.DefaultNetworkCredentials;

XElement f;
using (var response = request.GetResponse())
{
     var reader = new XmlTextReader(response.GetResponseStream()); 
     f = XElement.Load(reader);
}
return f;

但是,当我将其部署到生产环境(Windows 2008)时,我收到了401 Unauthorized异常。当以域用户身份登录时,我可以在浏览器中查看RSS源,但在尝试通过代码访问时,它似乎无法进行身份验证。

我也试过了:

request.Credentials = New System.Net.NetworkCredential("myUser","myPass","myDomain");

但仍然是401 Unauthorized。任何人都可以提出我所忽视的想法吗?

1 个答案:

答案 0 :(得分:0)

当您在VS中本地运行时,CredentialCache.DefaultNetworkCredentials将获得您的用户名,而当您在Web服务器上运行此客户端时,这将返回用于执行您的应用程序的帐户。这通常是Web服务器本地的NetworkService帐户。这就是为什么当您尝试使用此客户端对远程服务进行身份验证时,您将获得401.因此,您可以将ASP.NET MVC客户端应用程序配置为在具有访问远程服务权限的域帐户下执行。这可以在IIS管理器中的应用程序池的高级属性中完成。