WCF как передать токен для аутентификации? - PullRequest
15 голосов
/ 09 апреля 2010

У меня есть служба WCF, которая хотела бы поддерживать basicHttpBinding и webHttpBinding. Когда клиент успешно войдет в систему, сервер сгенерирует токен для клиента для передачи на сервер на все запросы, сделанные позже. Вопрос в том, как клиент может передать токен на сервер? Я не хочу добавлять дополнительный параметр в каждый веб-метод для хранения токена.

1 Ответ

18 голосов
/ 09 апреля 2010

Как правило, лучший способ сделать что-то подобное - передать такую ​​«метаинформацию» в заголовок WCF. Вы можете легко создать инспектор сообщений для расширения WCF (это на самом деле не так уж страшно и сложно!), Который вставляет токен в каждый исходящий запрос клиента, извлекает его из заголовка и проверяет его на стороне сервера.

В блоге есть несколько хороших сообщений, показывающих, как создать инспектор сообщений:

Проверьте два соответствующих интерфейса для реализации:

  • IClientMessageInspector на стороне клиента, который имеет сообщения BeforeSendRequest и AfterReceiveReply для реализации
  • IDispatchMessageInspector на стороне сервера, который имеет метод AfterReceiveRequest и BeforeSendReply для реализации
...