asp.net defaultCredentials问题

时间:2012-08-13 08:05:06

标签: c# asp.net authentication iis credentials

我有一个内部网站点,它从另一台服务器调用POST方法,也在内联网上。

如果我在IIS中将身份验证模式设置为基本身份验证,我可以使用以下内容:

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(sURL);
 oReq.ContentType = "application/x-www-form-urlencoded";
 oReq.Method = "POST";
 oReq.Timeout = 60000;

 ...

 oReq.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

 ...


try
{
   HttpWebResponse oResp = (HttpWebResponse)oReq.GetResponse();
   ...
}

以上所有工作都符合预期。

但是我需要在IIS中将安全性更改为Windows身份验证,并且一旦我这样做,我就会在此行上继续获取错误401:

try
    {
       HttpWebResponse oResp = (HttpWebResponse)oReq.GetResponse();
       ...
    }

可以通过改变凭证来修复:

NetworkCredential creds = new NetworkCredential("username","password","domain");
oReq.Credentials = creds;

但不管怎么说,这不是正确的方法。如何获取默认凭据以用于Windows身份验证?

1 个答案:

答案 0 :(得分:1)

如果你有一个网站呼叫另一个网站,你就有了第二跳。这是kerberos第二跳问题。

Intranet站点需要有权代表最终用户调用第二个站点。

我建议你使用工具电话DelegConfig。我不能高度推荐它。它是一个简单的asp.net应用程序,可以告诉你kerberos设置有什么问题,并告诉你如何解决它(或者如果你想要自己动手)

我发现我必须首先让客户端进行服务器身份验证才能正常工作,但是一旦这样就可以解决UNC / http / sql等下一跳的错误。