У меня есть служба WCF, которая хотела бы поддержать basicHttpBinding и webHttpBinding. Когда клиент успешно войдет в систему, сервер будет генерировать токен для того, чтобы клиент мог передать сервер на все последующие запросы. Вопрос в том, как клиент может передать токен серверу? Я не хочу добавлять дополнительный параметр для каждого веб-метода для хранения токена.
WCF как передать токен для аутентификации?
Ответ 1
Как правило, лучший способ сделать что-то подобное - передать такую "метаинформацию" в заголовке WCF. Вы можете легко создать инспектор сообщений для расширения WCF (это действительно не так страшно и трудно сделать!), Который вводит токен в каждый исходящий запрос от клиента и извлекает его из заголовка и проверяет его на стороне сервера.
Есть несколько хороших сообщений в блоге, в которых показано, как создать инспектор сообщений:
- Ричард Холлгрен публикации WCF
- Написание указателя сообщений WCF
- Автоматическая культура, текущая с WCF с помощью пользовательского поведения
Проверьте два соответствующих интерфейса для реализации:
- IClientMessageInspector на стороне клиента, который имеет сообщение
BeforeSendRequest
иAfterReceiveReply
для реализации - IDispatchMessageInspector на стороне сервера, который имеет
AfterReceiveRequest
иBeforeSendReply
метод для реализации