2011-05-10 51 views
1

我有一個WCF數據服務,並在web.config我已經使用WCF數據服務的Windows身份驗證問題

<authentication mode="Windows" /> 

我試圖避免任何綁定配置,所以在這一點上沒有用過。

我正在從WPF應用程序訪問服務。

IIS僅配置爲「Windows身份驗證」。

當我訪問該服務,我設置憑據

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

但我得到一個錯誤「401 - 未經授權:訪問由於憑據無效被拒絕。」

如果我將其更改爲以下,服務工作正常:

_proxy.Credentials = new NetworkCredential("username", "$password", "Domain"); 

當小提琴手跟蹤這一點,我注意到,當我使用DefaultNetworkCredentials的NTLM身份驗證頭是

域:

用戶:[email protected]

主持人:PC-59

當使用成功的新的NetworkCredential( 「用戶名」, 「$密碼」, 「MYDOMAIN」)中,auth頭是

域:MYDOMAIN

用戶:用戶名

主持人:PC-59

PS。爲了記錄在案,這裏是我的服務配置:

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior>   
     <serviceMetadata httpGetEnabled="true" />   
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />   

+0

你能顯示WCF服務的服務器配置。 – 2011-05-10 01:28:03

+0

雖然我接受我可能不得不使用配置來解決這個問題,但我試圖使用「零配置體驗」。爲了以防萬一,我已將它添加到問題中。 – user381624 2011-05-10 01:54:57

回答

0

看看認證博客系列亞歷克斯在這裏寫:http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

它描述了不同的身份驗證方案,以及他們如何做人。其中之一就是上面的內容(它也描述了客戶爲什麼要提出兩個請求,以及如何解決這個問題)。

希望這有助於

莫妮卡Frintu

+0

感謝您的鏈接。問題是,它聲明以下內容,但在我的情況下,用戶有權訪問服務器,但只有第二個選項有效: MyDataContext ctx = new MyDataContext(uri); ctx.Credentials = System.Net.CredentialCache.DefaultCredentials; 如果您的客戶端應用程序在可訪問服務器的Windows帳戶下運行,則上述示例是有意義的。如果不是,您將不得不創建一組新的NetworkCredentials並使用它們。 ctx.Credentials = new NetworkCredential( 「username」, 「password」, 「domain」); – user381624 2011-05-10 23:38:45