У меня есть служба WCF, использующая BasicHttpBinding с аутентификацией Windows.
Большинство клиентов являются учетными записями домена и подключаются к службе, используя свои учетные данные по умолчанию.
Теперь я хочу подключиться к службе от клиента ASP.NET, который работает под локальной учетной записью. Я хочу подключиться к службе WCF, используя учетные данные Windows (домен \ пользователь и пароль), доступные для приложения ASP.NET.
Я знаю, что могу сделать это в коде, используя ClientBase .ClientCredentials.
Есть ли способ указать учетные данные (домен \ пользователь и пароль) в клиентском файле web.config, чтобы мне не пришлось менять код?
EDIT
Если это невозможно сделать в файле конфигурации, есть ли способ использовать System.Net.ICredentials или System.Net.NetworkCredential в качестве учетных данных для службы WCF?
.NET Framework предоставляет их как однородный способ предоставления сетевых учетных данных, но с WCF это, кажется, было выброшено в пользу новой несовместимой системы, основанной на несвязанном классе System.ServiceModel.Description.ClientCredentials.
РЕДАКТИРОВАТЬ 2
Принятие ответа Марка на исходный вопрос - кажется, нет способа сделать это в файле конфигурации клиента: (
Я бы посчитал это недостатком 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);