Нужно ли WCF UserNamePasswordValidator проверять PrimaryIdentity.IsAuthenticated?

В настоящее время у меня есть сервис, который использует UserNamePasswordValidator аутентифицировать пользователя клиента. Код для проверки выглядит следующим образом:

  public override void Validate(String userName, String password)
  {
      if (userName == null) || (password == null)
          throw new FaultException("Username and/or password not specified.");
      if (userName != "test") && (password != "tset")
          throw new FaultException("Invalid username and/or password.");
  }

Как видите, код всегда выдает исключение, когда что-то не так.

Теперь вопрос - есть ли причина, по которой я должен проверить, ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated это правда внутри меня OperationContract функции? Например,

  public interface IMyService
  {
      [OperationContract]
      void myOpContract();
  }

  public class MyService : IMyService
  {
      public void myOpContract()
      {
          // Do I really need this conditional statement?
          if (ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated)
              // Proceed as expected
          else
              // Fail?
      }
  }

Любая помощь будет принята с благодарностью.

1 ответ

Решение

Из нескольких комментариев к этой статье - Silverlight 3. Защита службы WCF с помощью настраиваемого механизма аутентификации имени пользователя и пароля, а также из различных тестов - if ([...]PrimaryIdentity.IsAuthenticated) раздел не требуется. Бросать вину в UserNamePasswordValidator делает трюк с прекращением переговоров по безопасности.

Тем не менее, одна отличная идея от имени автора заключается в том, что if ([...]PrimaryIdentity.IsAuthenticated) Условный оператор на месте помогает, если в будущем будет добавлена ​​новая привязка (тип соединения) без защиты.

Другие вопросы по тегам