2012-05-22 56 views
1

我試圖通過WCF從不同服務器上的.ASHX內調用Sharepoint Web服務。如果我在Visual Studio的調試Web服務器內部運行,而不是從IIS運行,則我的代碼工作正常。工作服務器以各種身份驗證模式(Kerberos,NTLM)工作,非工作服務器不工作。在兩種情況下,我都扮演同一個用戶。驗證對WCF服務的調用

使用NTLM,我在Wireshark中記錄了一個工作會話和非工作會話。在工作中,Wireshark解析NTLM數據並報告我期望的DOMAIN和USER NAME。在非工作的,它顯示

DOMAIN: NULL 
    USER NAME: NULL 

我在IIS中調試和模擬肯定是在服務調用點。如果我檢查WindowsIdentity.GetCurrent(),這是我期望的用戶。

如果我檢查工作和非工作服務器上的WCF服務代理,它們看起來完全相同 - 處理ClientCredentials的部分設置爲""兩個版本的用戶名和密碼。

關於還有什麼要檢查的任何想法?爲什麼NTLM數據將DOMAIN和USER NAME設置爲NULL - 它從哪裏選擇?

回答

1

根據該:

http://support.microsoft.com/kb/207671

當IIS服務的HTTP請求,IIS以便訪問資源來處理該請求被適當地限制執行模擬。模擬的安全上下文基於對請求執行的身份驗證類型。 IIS 4.0提供五種不同的身份驗證類型有:

Authentication Type       Impersonation Type 
------------------------------------   --------------------- 
Anonymous Access (no authentication)   Network 
Auto Password Synchronization is 
ON (ON=default) 

Anonymous Access (no authentication)   IIS Clear Text 
Auto Password Synchronization is OFF   

Basic Authentication       IIS Clear Text 

NT Challenge/Response Authentication   Network 

Client SSL Certificate Mapping    Interactive 

就我而言,我有一個網絡令牌,但

網令牌「不」允許訪問網絡資源。 (網絡令牌的名稱是這樣命名的,因爲這種令牌傳統上是在用戶通過網絡進行認證時由服務器創建的。要允許服務器使用網絡令牌充當網絡客戶端並訪問另一臺服務器稱爲「委派」而被認爲是一個潛在的安全漏洞。)

的KB有許多可能的方法來避免這個問題