У меня есть служба WCF с использованием BasicHttpBinding с проверкой подлинности Windows. Большинство клиентов являются учетными записями домена и подключаются к службе, используя свои учетные данные по умолчанию.
Теперь я хочу подключиться к службе из клиента ASP.NET, который работает под локальной учетной записью. Я хочу подключиться к службе WCF, используя учетные данные Windows (домен\пользователь и пароль), доступные для приложения ASP.NET.
Я знаю, что могу сделать это в коде, используя ClientBase <T> .ClientCredentials.
Есть ли способ указать учетные данные (домен\пользователь и пароль) в файле client.config клиента, поэтому мне не нужно менять код?
ИЗМЕНИТЬ
Если это невозможно сделать в файле конфигурации, существует ли способ использования System.Net.ICredentials или System.Net.NetworkCredential в качестве учетных данных для службы WCF?
.NET Framework обеспечивает их как однородный способ предоставления сетевых учетных данных, но с WCF это, похоже, выбрасывается в пользу новой несовместимой системы на основе несвязанного класса System.ServiceModel.Description.ClientCredentials.
РЕДАКТИРОВАТЬ 2
Принятие ответа Marc на исходный вопрос - кажется, что нет никакого способа сделать это в файле конфигурации клиента: (
Я видел бы это как недостаток WCF - я не согласен с тем, что Microsoft намеренно препятствует нам вводить учетные данные в файле конфигурации - после того, как все они должны быть где-то сохранены, а в Framework есть средства для шифрования файл конфигурации. Наверное, я мог бы создать для этого пользовательский элемент BehaviorExtensionElement, но он должен быть доступен из коробки.
Он также немного несовместим: элемент конфигурации system.net/mailSettings/smtp/network позволяет указать учетные данные, поэтому почему WCF?
Что касается второго вопроса об использовании System.Net.NetworkCredential, кажется, из этого блога, что это возможно, по крайней мере, при использовании проверки подлинности Windows, со следующим кодом:
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);