我有一個使用BasicHttpBinding和Windows身份驗證的WCF服務。 大多數客戶端都是域帳戶,並使用其默認憑證連接到該服務。如何在WCF客戶端配置文件中指定Windows憑據
現在我想連接到本地帳戶下運行的ASP.NET客戶端的服務。我想使用ASP.NET應用程序可用的Windows憑據(域\用戶名和密碼)連接到WCF服務。
我知道我可以在代碼中使用ClientBase < T> .ClientCredentials來做到這一點。
有沒有辦法在客戶端的web.config文件中指定憑證(域\用戶和密碼),所以我不必更改代碼?
編輯
如果它不能在配置文件中進行,有沒有使用System.Net.ICredentials或System.Net.NetworkCredential作爲一個WCF服務憑證的方式嗎?
.NET框架提供了這些提供網絡憑證的同源方式,但對於WCF,似乎已經拋棄了基於不相關的System.ServiceModel.Description.ClientCredentials類的新的不兼容系統。
EDIT 2
接受馬克的回答原來的問題 - 這似乎是沒有辦法的客戶端配置文件:(
我會認爲這是在WCF缺乏在這樣做 - 我不認爲微軟應該故意阻止我們把證書放在配置文件中 - 畢竟他們必須存儲在某個地方,並且Framework包含了用於加密配置文件的工具。我想我可以爲此創建一個自定義的BehaviorExtensionElement ,但它應該是開箱即用的。
這也有點不一致:system.net/mailSettings/smtp/network配置元素允許指定憑據,那麼爲什麼不使用WCF呢?
關於如何使用System.Net.NetworkCredential第二個問題,從this blog,這是可能的,使用至少在Windows身份驗證,用下面的代碼看起來:
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);
「......在你的配置文件,以純文本」是不是一般的好東西,但在加密的配置文件就可以了。 – Joe 2009-06-04 17:02:28
@marc_s它是否仍然無法通過配置文件進行設置? – 2013-02-28 11:31:08
@Johnny_D:不會,據我所知。 – 2013-02-28 12:39:23