2012-08-13 59 views
0

我有一个内部网站从另一个服务器,也在Intranet上调用POST方法。asp.net defaultCredentials问题

如果我在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(); 
    ... 
} 

以上所有的作品如预期。

不过,我需要的安全性更改为Windows身份验证在IIS中,有一次我做我不断收到错误401这条线上未授权:

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

,可以通过改变像这样的凭证固定:

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

但是这不是正确的方法。我怎样才能使默认凭据也适用于Windows身份验证?

+0

您使用哪个浏览器进行测试?这个资源可能会指向你正确的方向。 – bUKaneer 2012-08-13 14:51:45

+0

我正在使用IE9浏览器。 – 2012-08-14 08:53:39

回答

1

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

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

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

我发现我必须让客户端服务器身份验证首先为它工作,但一旦这样做,它就可以很容易地确定UNC/http/sql的下一跳有什么问题。