2011-06-29 86 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能够加密和存储通用凭证的地方。 该服务然后在运行时解析凭据并使用它们对远程服务进行身份验证。 此方法允许确保以纯文本形式将凭证写入磁盘,并且还允许应用程序使用用户名/密码验证。 –

相关问题