我知道我可以使用如何在使用配置的WCF客戶端上設置用戶名/密碼?
myClient.ClientCredentials.UserName.UserName = "User";
myClient.ClientCredentials.UserName.Password = "Password";
是否有可能通過配置來提供客戶端同樣的事情,而不是通過代碼做到這一點?
我知道我可以使用如何在使用配置的WCF客戶端上設置用戶名/密碼?
myClient.ClientCredentials.UserName.UserName = "User";
myClient.ClientCredentials.UserName.Password = "Password";
是否有可能通過配置來提供客戶端同樣的事情,而不是通過代碼做到這一點?
不幸的是,我不認爲這是可能的。但是,您可以手動讀取.config文件設置並以編程方式將其設置...
clientCredentials.UserName.UserName = ConfigurationManager.AppSettings["username"];
clientCredentials.UserName.Password = ConfigurationManager.AppSettings["password"];
開箱即用不可能。更重要的是它也不會很安全。
任何有權訪問配置文件的人都將擁有該服務的憑據。對於客戶端應用程序,這將是任何可以運行該程序的人,因爲他們將具有對應用程序安裝位置的讀取權限。
如果您可以在配置中存儲數據庫連接的憑證,那麼爲什麼不用該服務?我同意它可能不是最安全的方法,但是,它會遵循已經實踐的其他這種模式。 – Kon
僅僅因爲你不能使它成爲一個好主意:)有時候數據庫必須使用sql認證,但是這仍然使得它比使用數據庫連接的集成認證更安全。 –
我最近通過p/invoke CredRead和CredWrite Win32 api調用解決了這個問題。然後,我使用服務帳戶登錄到服務器,並將所需的憑據添加到Windows Credential Manager。這是Windows能夠加密和存儲通用憑證的地方。 該服務然後在運行時解析憑據並使用它們對遠程服務進行身份驗證。 此方法允許確保以純文本形式將憑證寫入磁盤,並且還允許應用程序使用用戶名/密碼驗證。 –
不,這是少數幾個可以在代碼中設置**的設置之一。 –