C #: способ добавить аутентификацию WCF, имя пользователя + SSL? - PullRequest
0 голосов
/ 23 ноября 2010

Я написал как клиент WCF, так и удаленный интернет-сервер WCF.

На удаленном сервере WCF работает WPF, размещенный в традиционной оболочке службы Windows (т. Е. Не IIS).

В настоящее время он отлично работает с базовым HTTP-связыванием.Я использую Visual Studio 2010 + .NET 4.0 + C #.

Может ли кто-нибудь указать мне правильные шаги, чтобы изменить мой код, чтобы я мог добавить имя пользователя + SSL-аутентификацию?

РЕДАКТИРОВАНИЕ:

В конце службы я переопределил UserNamePasswordValidator следующим образом:

public class CustomUserNameValidator : UserNamePasswordValidator
{
  public override void Validate(string userName, string password)
  {
    Console.WriteLine("Got to here");
  }
}

В конце службы я указал ссылку накласс проверки имени пользователя:

  ServiceHost serviceHost = new ServiceHost(typeof(PhiFeedServer.PhiFeed)); // ,baseAddress);

  const bool passswordAuthentication = true;
  if (passswordAuthentication)
  {
    // These two lines switch on username/password authentication (see custom class "CustomUserNameValidator" in common file PhiFeed.svc.cs)
    // See http://msdn.microsoft.com/en-us/library/aa354513.aspx
    serviceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
    serviceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomUserNameValidator();
  }

  // Start the service
  serviceHost.Open();

На стороне клиента:

  EndpointAddress endpointAddress = new EndpointAddress("http://localhost:20000/PhiFeed?wdsl"); 
  BasicHttpBinding serviceBinding = new BasicHttpBinding();
  serviceBinding.ReceiveTimeout = new TimeSpan(0, 0, 120);
  proxy = new PhiFeedClient(serviceBinding, endpointAddress);

  proxy.ClientCredentials.UserName.UserName = "myusername";
  proxy.ClientCredentials.UserName.Password = "mypassword";

Однако, когда я запускаю все, он даже не вызывает валидатор имени пользователя - что происходит?

Ответы [ 2 ]

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

Aha!Нашел решение моей проблемы.

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

Поиск "Windows Communication Foundation (WCF) и Windows"Образцы Workflow Foundation (WF) для .NET Framework 4 ", загрузите, разархивируйте в C: и запустите образец здесь:

C: \ WF_WCF_Samples \ WCF \ Extensibility \ Security \ UserNamePasswordValidator \ CS

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

Если я правильно понял, вам нужно поиграться с сервисным поведением. Я сделал это в 3.5 sp1 должно быть то же самое в 4.0, я думаю.

прочитайте это: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/7d589542-277a-404e-ab46-222794422233/

...