2011-12-23 25 views
2

我有一個在IIS 6上運行的WCF服務,它使用NTLM進行集成身份驗證和模擬。Ntlm和NTLM之間的WCF有什麼區別,我該如何解決它?

的Web.Config

<system.web> 
    <identity impersonate="true"/> 
    <customErrors mode="Off"></customErrors> 
    </system.web> 
    <system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    ... 
    </system.web> 
    ... 
    <wsHttpBinding> 
    <binding name="wsHttpEndpointBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Ntlm" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 

的相關部分我剛添加的aspNetCompatibility,因爲我想知道用戶是誰(至少就IIS關注)這是記錄。從我已經完成的少量搜索中獲得用戶。

好,添加該行並出版我的服務器後,我得到了什麼是可能是我見過的最愚蠢的錯誤:

The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'.

我想,「嗯,顯然他們正在做一個非常區分大小寫的比較。 「所以我搜索了我的整個客戶端解決方案中的Ntlm,並用NTLM替換了所有非變量事件。沒有運氣。

我的主要目標當然是讓用戶通過IIS + NTLM進行身份驗證。如果我以錯誤的方式去解決問題,我很樂意知道更簡單/更好的方法。否則,我該如何告訴我的客戶(或我的服務器)可以繼續進行身份驗證?

+0

所以你的傳輸是現在clientCredentialType =「NTLM」,你更新了你的客戶端的配置文件? – Josh 2011-12-23 18:14:13

+0

你的解決方案是什麼? – 2012-04-25 20:20:09

回答

-1

開始Here。這應該可以解決您的問題

+0

偉大的鏈接。書籤。 – x0n 2012-05-17 14:28:54

+1

這不是一個答案,它是一個鏈接。在這種情況下,什麼解決了問題? – 2014-02-20 10:34:50

2

如果您遇到此錯誤,另一種可能性是您遇到NTLM環回檢查問題。我有一個在非域(工作組)服務器上運行自包含的服務。使用BasicHttpBinding配置傳輸安全模式和Ntlm客戶端憑證來配置WCF。當試圖使用https://servername訪問服務時,它的效果很好。如果我嘗試使用FQDN(https://servername.domain.com)來訪問它,它失敗了同樣的錯誤:

The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'. 

如果你看看Windows安全日誌裏面你會看到事件ID 4625.審覈失敗在此,你會看到以下失敗信息:

Failure Information: 
Failure Reason: An Error occured during Logon. 
Status:   0xc000006d 
Sub Status:  0x0 

要解決此問題,您需要或者add the back connect host names (preferred) or disable the loopback check。這是針對Windows Server 2003 SP1中的NTLM添加的安全增強功能,後來針對該協議關閉了一個攻擊向量。但是,這個修復會導致很多不明確的錯誤信息,比如WCF的這個錯誤信息,並且至今仍以許多晦澀的方式困擾着我。

相關問題