Передача информации о клиенте через веб-сайт в службу WCF Rest
Мне нужно знать, как лучше всего передать информацию о клиенте (личность, язык и т. Д.) Через мой веб-сайт ASP.NET в мои внутренние веб-службы WCF RESTful. Мне бы хотелось, чтобы решение было переносимым (многоразовым) для других приложений, поскольку эта модель очень типична для моей организации.
Вот сценарий:
- Веб-сайт ASP.NET работает на веб-сервере, который находится в нашей зоне периметра.
- Приложение службы WCF работает на сервере приложений за брандмауэром в нашей внутренней сети.
- Клиент (пользователь) может быть в нашей внутренней сети или в Интернете, когда он / она просматривает веб-сайт.
- Сайт вызывает веб-сервис для запроса различной информации или для выполнения определенных задач.
- Веб-сервису нужна информация о клиенте для выполнения этих операций.
Примечание: веб-сайт использует проверку подлинности с помощью форм и НЕ выдает себя за пользователя. Таким образом, передача идентификационной информации или текущей информации о культуре с использованием расширяемости WCF (поведение, инспекторы и т. Д.) Дает нам только идентичность и культуру веб-сервера, а не фактического клиента.
Какие-либо предложения?
1 ответ
Это похоже на случай федеральной безопасности.
По сути, когда пользователь входит в систему, вы генерируете билет сеанса. Это может быть число или строка. Этот билет содержит закодированную информацию о личности пользователя и / или его ролях, а также метку времени истечения.
Вы передаете этот билет сеанса своим вызовам REST, а принимающий сервер декодирует билет, чтобы получить необходимую ему информацию. Если билет недействителен (не расшифрован, не устарел или не имеет необходимых прав), серверный метод отклоняет операцию и возвращает статус 401 "Неавторизованный HTTP".
Чтобы реализовать это, вы можете положиться на реализацию Microsoft ( wsFederationHttpBinding) или накатить свою собственную, что обычно требует меньше усилий.
Еще одно примечание: для генерации и аутентификации билетов вы можете создать другую службу, которая находится за вашим 2-м межсетевым экраном, или вы можете использовать DLL-библиотеку в памяти... Но убедитесь, что генерировать заявку нелегко в случае, если веб-сервер скомпрометирован.