Я пытаюсь (отчаянно) заставить поставщика аутентификации клиента работать на мою службу WCF.Пока у меня есть следующий код:
web.config
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyNamespace.CustomUserNameValidator, MyNamespace" />
</serviceCredentials>
<wsHttpBinding>
<binding name="wsHttpBindingConfig" >
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
Пользовательский класс аутентификатора;
public class CustomUserNameValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
// have security details been provided?
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
// authenticate user
if (!(userName == "test" && password == "test"))
{
// This throws an informative fault to the client.
throw new FaultException("SecurityFailed");
}
}
}
Все компилируется нормально, но при использовании теста WCFклиент Visual Studio для вызова метода с именем Ping (ниже), пользовательский аутентификатор никогда не используется.Метод Ping только что выполняется, и любая точка останова, которая есть в моем классе CustomUserNameValidator.
Почему это так?Вся помощь приветствуется.