Как правильно передать System.Net.NetworkCredential клиенту WCF?C#

Место общения программистов C#
Anonymous
Как правильно передать System.Net.NetworkCredential клиенту WCF?

Сообщение Anonymous »

В настоящее время у меня есть клиентское устройство, которое запрашивает у пользователя имя пользователя/пароль и создает System.Net.NetworkCredential, который передается в службу WCF. Затем эта служба WCF использует учетные данные для использования в другой внешней службе.

Проблема в том, что всякий раз, когда я прохожу через System.Net.NetworkCredential к службе, кажется, что оно теряет поле пароля, и поэтому я никогда не могу пройти аутентификацию во внешней службе. Я протестировал просто передачу простого текста/строк в качестве пользователя/пароля, и это работает, но мне кажется, что это не очень хорошо с точки зрения безопасности (хотя у меня включен HTTPS для всего трафика между двумя службами).

Есть ли способ правильно передать эти учетные данные в службу?

Вот небольшой тестовый код для службы WCF:

Код: Выделить всё

public string TestCred(System.Net.NetworkCredential c, string username, string pass)
{

cred = c;
userName = username;
passWord = pass;
string s = cred.UserName + cred.Password + "end";
return s;

}
Я возвращаю эту строку, чтобы проверить, что на самом деле получено на стороне Службы, и пароль полностью пуст (имя пользователя делает это нормально).

Вот код, который я использую в службе WCF для связи с внешней службой:

Код: Выделить всё

externalService.Credentials =  new System.Net.NetworkCredential(cred.UserName, cred.Password, "domain");
Это не работает, поскольку поле cred.Password пусто, я тоже пробовал:

Код: Выделить всё

externalService.Credentials = cred;
Это тоже не работает.

Когда я использую простые строки, это работает отлично:

Код: Выделить всё

externalService.Credentials =  new System.Net.NetworkCredential(userName, passWord, "domain");
Есть предложения? Поскольку для соединения между клиентским устройством-WCF и службой-внешней службой требуется HTTPS-SSL, оно немного безопасно, но мне не понравилось передавать пользователя/пароль с помощью строк.

Вернуться в «C#»