WCF USERNAMESASSWORDVALIDATOR требует проверки GrivariDeTiveTiveTive.isauthentiCate?
-
27-09-2019 - |
Вопрос
В настоящее время у меня есть услуга, которая использует 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?
}
}
Любая помощь будет очень ценится.
Решение
От нескольких комментариев в этой статье - Silverlight 3: Обеспечение вашей службы WCF с пользовательским механизмом аутентификации имени пользователя / пароля и из различных испытаний - if ([...]PrimaryIdentity.IsAuthenticated)
раздел не требуется. Бросать неисправность внутри UserNamePasswordValidator
делает трюк прерывания переговоров по безопасности.
Тем не менее, одна отличная идея от имени автора в том, что оставив if ([...]PrimaryIdentity.IsAuthenticated)
Условное заявление на месте помогает, если в будущем добавляется новое связывание (тип подключения) без безопасности.