WCF Soap веб-сервис и аутентификация - PullRequest
0 голосов
/ 27 декабря 2011

Я создаю службу WCF, которая использует basicHttpBinding (SOAP). Я хотел бы, чтобы каждый запрос к веб-сервису требовал имя учетной записи и ключ, по сути, имя пользователя и пароль. В настоящее время эти значения передаются в качестве аргументов каждому открытому методу. Это правильный способ справиться с этой ситуацией? Кажется, это нарушает СУХОЙ, и я предполагаю, что есть более простой, встроенный способ. Я видел несколько примеров вставки имени пользователя и пароля в заголовки путем перехвата запроса, но этот подход, кажется, добавляет немного усилий для подключения клиентов.

Спасибо!

1 Ответ

1 голос
/ 27 декабря 2011

Вместо того, чтобы когда-либо отправлять запрос имени пользователя и пароля, почему бы не иметь метод входа в систему, который возвращает токен, и передать его?

Если вы хотите минимизировать DRY, вы можете сделать следующее:

Сначала создайте общий класс, подобный следующему, от которого наследуются все контракты запросов (кроме входа в систему и выхода из системы):

[MessageContract]
public abstract class AuthenticatedRequest <T> {
    [MessageHeader]
    public string Token { get; set;]
}

Теперь создайте приватную функцию с именем private bool IsAuthenticated(string Token), которая проверяет токен.Это минимизирует церемонию проверки подлинности.

...