Как установить токен безопасности в WCF? - PullRequest
7 голосов
/ 08 ноября 2010

Я обновляю приложение с .net 1.1 до 3.5.Это приложение подключается к службе WCF.Ранее клиент веб-службы был настроен на использование маркера безопасности, например:

RegistrationWSWse registrationService = new RegistrationWSWse();
Microsoft.Web.Services2.Security.Tokens.UsernameToken token = new Microsoft.Web.Services2.Security.Tokens.UsernameToken("some username", "some password", Microsoft.Web.Services2.Security.Tokens.PasswordOption.SendPlainText );
registrationService.RequestSoapContext.Security.MustUnderstand=false;
registrationService.RequestSoapContext.Security.Tokens.Add(token);

Теперь я добавил новую ссылку на службу в Visual Studio в веб-службу, но автоматически сгенерированный код не обеспечиваетлюбой способ установить заголовок безопасности, как описано выше.

Это то, что нужно настроить в файле конфигурации, system.serviceModel раздел?


Обновление

Причина, по которой я не увидел свойства имени пользователя / пароля, заключалась в том, что я работал с интерфейсом службы, а не с классом фактической реализации.

Мне удалось установить эти вещи путем приведениянапример, экземпляр типа:

((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.UserName = userName;
((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.Password = password;

Другая важная вещь, которую вам нужно сделать, это обновить файл клиента app.config.Если вы этого не сделаете, имя пользователя и пароль не будут установлены в заголовке SOAP.Пример:

<security mode="TransportWithMessageCredential" />

1 Ответ

1 голос
/ 08 ноября 2010

Ознакомьтесь с этой статьей на MSDN . Это сообщение также содержит полезную информацию по вашему вопросу.

...