2011-06-29 1 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

Если вы можете хранить учетные данные для подключения к базе данных в config, почему бы не использовать эту услугу? Я согласен с тем, что это не самый безопасный метод, но он, однако, последует примеру других подобных моделей. – Kon

+0

Просто потому, что вы не можете сделать это хорошей идеей :) Иногда базы данных должны использовать аутентификацию sql, но это все еще делает ее менее безопасной, чем использование встроенной проверки подлинности для подключения к базе данных. –

+0

Недавно я столкнулся с этой проблемой, вызвав вызовы CredRead и CredWrite Win32 api. Затем я зашел на сервер с помощью учетной записи службы и добавил необходимые учетные данные в Windows Credential Manager. Здесь Windows может шифровать и хранить общие учетные данные. Служба затем разрешает учетные данные во время выполнения и использует их для аутентификации с удаленной службой. Этот метод позволил обеспечить защиту учетных данных от записи на диск простым текстом, а также разрешить приложению использовать аутентификацию имени пользователя и пароля. –