WCF как передать токен для аутентификации?

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

Ответы

Ответ 1

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

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

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

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