Передача информации о клиенте через веб-сайт в службу WCF Rest - PullRequest
1 голос
/ 24 июня 2011

Мне нужно знать, как лучше всего передать информацию о клиенте (личность, язык и т. Д.) Через мой веб-сайт ASP.NET в мои внутренние веб-службы WCF RESTful. Мне бы хотелось, чтобы решение было переносимым (многоразовым) для других приложений, поскольку эта модель очень типична для моей организации.

Вот сценарий:

  • Сайт ASP.NET работает в сети. сервер, который сидит в нашем периметре зона.
  • Приложение службы WCF работает сервер приложений за брандмауэром на наша внутренняя сеть.
  • Клиент (пользователь) может быть на нашем внутренняя сеть или в Интернете, когда он / она просматривает веб-сайт.
  • Сайт призывает веб-сервис к запросить различную информацию или выполнять определенные задания.
  • Веб-сервис нуждается в клиенте информация для того, чтобы выполнить эти операции.

Примечание: веб-сайт использует проверку подлинности с помощью форм и НЕ выдает себя за пользователя. Таким образом, передача идентификационной информации или текущей информации о культуре с использованием расширяемости WCF (поведение, инспекторы и т. Д.) Дает нам только идентичность и культуру веб-сервера, а не фактического клиента.

Есть предложения?

1 Ответ

0 голосов
/ 24 июня 2011

Это похоже на случай федеративной безопасности.

Обычно, когда пользователь входит в систему, вы генерируете билет сеанса. Это может быть число или строка. Этот билет содержит закодированную информацию о личности пользователя и / или его ролях, а также метку времени истечения.

Вы передаете этот билет сеанса своим вызовам REST, а принимающий сервер декодирует билет, чтобы получить необходимую ему информацию. Если билет недействителен (не расшифрован, не устарел или не имеет необходимых прав), серверный метод отклоняет операцию и возвращает статус 401 «Неавторизованный HTTP».

Чтобы реализовать это, вы можете положиться на реализацию Microsoft ( wsFederationHttpBinding ) или свернуть свою собственную, что обычно требует меньше усилий.

Еще одно замечание: для генерации и аутентификации билетов вы можете создать другую службу, которая находится за вашим 2-м межсетевым экраном, или вы можете использовать DLL-библиотеку в памяти ... Но убедитесь, что генерировать заявку нелегко в случае взлома веб-сервера.

...