2012-03-21 101 views
0

我也不相信 - 我會向任何有興趣的人展示加入我!VIsual Studio 2010保留到WCF服務參考密碼?

這是交易。兩臺計算機與添加服務引用的行爲不同。

計算機1 - 我會打電話給他BigMac
電腦2 - 我會打電話給他Littlemac

我寫了一篇關於BigMac的Web服務。和一個Windows客戶端應用程序來調用它。所有作品都很棒。部署到客戶端的計算機,所有工作都很好。我們決定保護服務器,以便消費者必須將Windows用戶名/密碼傳遞給服務,我們將使用Https。 8小時後,在這裏和其他地方進行了大量搜索,我找到了答案。服務器配置。看起來像這樣:

<services> 
    <service name="SecureWcfTestsApplication.Service1"> 
    <endpoint address="" 
     binding="basicHttpBinding" 
     bindingConfiguration ="Binding2" 
     contract="SecureWcfTestsApplication.IService1" /> 
    </service> 
</services> 
<bindings> 
    <basicHttpBinding> 
    <binding name="Binding2"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

將其部署到遠程服務器上。轉到任何Web瀏覽器,輸入服務URL,輸入用戶名和密碼,然後獲取服務描述。都好。

但是 - 客戶端代碼可以調用它而不提供任何憑據。

客戶端代碼僅僅是這樣的:

remote.Service1Client服務1 =新remote.Service1Client(); service1.GetData(20);

就是這樣。它從Visual Studio中運行,並作爲exe。如果我將exe複製到另一臺機器上,它不會運行。

好的 - 在BigMac(同一臺計算機)上開始一個新項目 - 這裏沒有服務實現只是一個Windows應用程序。我添加了遠程服務引用,但它又不要求輸入用戶名和密碼。我可以在沒有任何憑證的情況下致電該服務。

轉到LittleMac。打開網頁瀏覽器並導航到服務 - 我需要一個用戶名/密碼。打開Visual Studio,添加服務引用 - 我需要用戶名/密碼。客戶端代碼需要設置用戶名/密碼。

我重新啓動BigMac - 從頭開始​​ - 新項目 - 添加Web引用 - 不需要密碼並且運行。

Wtf?任何人?

最佳

回答

0

假設:你沒有Windows域。

好吧,讓我們考慮一下「Windows」身份驗證的含義。從here

Windows身份驗證

的服務通常使用Kerberos時,在Windows域服務器可用,或在NTLM工作組配置部署時。調用者使用其Windows憑據(如票證或令牌)提供該服務,並且該服務會對Windows進行身份驗證。

現在,假設您的網絡中沒有域,這意味着它實際上是在運行Visual Studio的本地帳戶以及BigMac上的client.exe執行身份驗證。由於您的本地帳戶已經過身份驗證(您已登錄),客戶端只需將令牌轉發給Web服務即可對其進行身份驗證。

另一方面,LittleMac在另一臺機器上進行本地身份驗證,這意味着它必須爲運行Web服務的計算機上的本地帳戶提供用戶名和密碼。

我不知道這是不是你的情況,我的描述可能不是100%真實的背景發生了什麼,但在任何情況下,WCF都沒有保留密碼,所以不要擔心:)

HTH

+0

嘿 - 感謝有它刺傷。如果你所說的是正確的 - 有沒有什麼辦法可以「解密」這臺計算機,因爲這實際上可能會導致一些問題呢?在這臺機器上,我忘記在代碼中設置憑據,但無論如何它都能正常工作。但是它在部署時不起作用,會嗎? – RBrowning99 2012-03-22 17:15:48

+0

我不知道你是否能夠避免自動認證,因爲WCF沒有問你爲你做。不,如果您將它部署到另一臺計算機上,它將無法正常工作,正如您在另一臺計算機上部署它時看到的那樣。 – 2012-03-22 21:35:37

+0

再次想到,您可以嘗試將ClientCredentialType設置爲「密碼」(請參閱​​http://msdn.microsoft.com/zh-cn/library/ms733836.aspx),那麼理論上它應該會詢問您的憑據,即使您已經通過身份驗證。我很抱歉,但我現在沒有時間去嘗試。 – 2012-03-23 08:09:57