Вместо того, чтобы когда-либо отправлять запрос имени пользователя и пароля, почему бы не иметь метод входа в систему, который возвращает токен, и передать его?
Если вы хотите минимизировать DRY, вы можете сделать следующее:
Сначала создайте общий класс, подобный следующему, от которого наследуются все контракты запросов (кроме входа в систему и выхода из системы):
[MessageContract]
public abstract class AuthenticatedRequest <T> {
[MessageHeader]
public string Token { get; set;]
}
Теперь создайте приватную функцию с именем private bool IsAuthenticated(string Token)
, которая проверяет токен.Это минимизирует церемонию проверки подлинности.