Validate никогда не вызывается в автономном wcf-сервисе? - PullRequest
2 голосов
/ 14 мая 2011

Я называю свою службу следующим образом:

private void button1_Click(object sender, RoutedEventArgs e)
    {
       TestServiceClient client = new  
 TestServiceClient("WSHttpBinding_ITestService");
       client.ClientCredentials.UserName.UserName = "wrong";
       client.ClientCredentials.UserName.Password = "password";

        try
        {
            client.Open();

            client.GetColors(); //should not validate, but it is.
            client.Close();
        }
        catch (Exception ex)
        {

        }
    }

Я переопределяю Подтвердить так:

public class CustomUserNameValidator : UserNamePasswordValidator
{
    public override void Validate(string userName, string password)
    {

        if ((userName != "right") || (password != "password"))
        {
            throw new SecurityTokenException("Validation Failed!");
        }
    }

    public CustomUserNameValidator()
    {


    }
}

CustomUserNameValidator находится в моем Test.dll, поэтому в моем файле web.configsРаздел ServiceBehehaviors, я определил это:

<behavior name="CustomValidator">
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom"
                                 customUserNamePasswordValidatorType="Test.CustomUserNameValidator, Test"/>

        <serviceCertificate findValue="Test" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>

        </serviceCredentials>

      <serviceMetadata httpGetEnabled="True"/>

    </behavior>

Когда я запускаю клиент, он прекрасно выполняет службу, даже если я указал неверные учетные данные.Подтвердить даже не позвонили.Единственный способ заставить Validate быть вызванным, это если я добавлю его в свою операцию GetColors, но тогда мне придется помещать его в каждую операцию.

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

Работает ли валидация произвольного имени пользователя, если оно не размещено самостоятельно, а размещено в IIS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...