У меня есть служба WCF с использованием BasicHttpBinding с проверкой подлинности Windows. Большинство клиентов являются учетными записями домена и подключаются к службе, используя свои учетные данные по умолчанию.Как указать учетные данные Windows в файле конфигурации клиента WCF
Теперь я хочу подключиться к службе с помощью клиента ASP.NET, который работает под локальной учетной записью. Я хочу подключиться к службе WCF, используя учетные данные Windows (домен \ пользователь и пароль), которые доступны для приложения ASP.NET.
Я знаю, что могу сделать это с помощью ClientBase < T> .ClientCredentials.
Есть ли способ указать учетные данные (домен \ пользователь и пароль) в файле web.config клиента, поэтому мне не нужно менять код?
EDIT
Если это не может быть сделано в файле конфигурации, есть способ использования System.Net.ICredentials или System.Net.NetworkCredential в качестве учетных данных для службы WCF?
.NET Framework обеспечивает их как однородный способ предоставления сетевых учетных данных, но с WCF это, похоже, выбрасывается в пользу новой несовместимой системы, основанной на несвязаном классе System.ServiceModel.Description.ClientCredentials.
EDIT 2
Принимая ответ Марка, к первоначальному вопросу - кажется, нет никакого способа, чтобы сделать это в файле конфигурации клиента :(
Я бы увидеть это как недостаток в WCF - Я не согласен с тем, что Microsoft должна умышленно препятствовать нам вводить учетные данные в файле конфигурации - в конце концов, они должны быть где-то сохранены, а в Framework есть возможности для шифрования файла конфигурации. Думаю, я мог бы создать пользовательский элемент BehaviorExtensionElement для этого , но он должен быть доступен из коробки.
Это также немного противоречиво: элемент конфигурации system.net/mailSettings/smtp/network позволяет указать учетные данные, так почему бы не WCF?
Что касается второго вопроса об использовании System.Net.NetworkCredential, кажется, из this blog, что можно, по крайней мере при использовании проверки подлинности Windows, с помощью следующего кода:
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);
«... в файле конфигурации, в виде обычного текста» как правило, не очень хорошая вещь, но в файле конфигурации зашифрованного в порядке. – Joe
@marc_s До сих пор недоступно для установки через файл конфигурации? –
@Johnny_D: нет, насколько я знаю. –