2011-06-29 85 views
2

我知道我可以使用如何在使用配置的WCF客戶端上設置用戶名/密碼?

myClient.ClientCredentials.UserName.UserName = "User"; 
myClient.ClientCredentials.UserName.Password = "Password"; 

是否有可能通過配置來提供客戶端同樣的事情,而不是通過代碼做到這一點?

+0

不,這是少數幾個可以在代碼中設置**的設置之一。 –

回答

5

不幸的是,我不認爲這是可能的。但是,您可以手動讀取.config文件設置並以編程方式將其設置...

clientCredentials.UserName.UserName = ConfigurationManager.AppSettings["username"]; 
clientCredentials.UserName.Password = ConfigurationManager.AppSettings["password"]; 
2

開箱即用不可能。更重要的是它也不會很安全。

任何有權訪問配置文件的人都將擁有該服務的憑據。對於客戶端應用程序,這將是任何可以運行該程序的人,因爲他們將具有對應用程序安裝位置的讀取權限。

+0

如果您可以在配置中存儲數據庫連接的憑證,那麼爲什麼不用該服務?我同意它可能不是最安全的方法,但是,它會遵循已經實踐的其他這種模式。 – Kon

+0

僅僅因爲你不能使它成爲一個好主意:)有時候數據庫必須使用sql認證,但是這仍然使得它比使用數據庫連接的集成認證更安全。 –

+0

我最近通過p/invoke CredRead和CredWrite Win32 api調用解決了這個問題。然後,我使用服務帳戶登錄到服務器,並將所需的憑據添加到Windows Credential Manager。這是Windows能夠加密和存儲通用憑證的地方。 該服務然後在運行時解析憑據並使用它們對遠程服務進行身份驗證。 此方法允許確保以純文本形式將憑證寫入磁盤,並且還允許應用程序使用用戶名/密碼驗證。 –

相關問題