2012-08-13 56 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的下一跳有什麼問題。