Как защитить транспорт для клиента .Net 2.0 до автономного веб-сервиса WCF 3.5? - PullRequest
1 голос
/ 10 декабря 2010

Мы продаем системы торговых точек, которые обычно включают в себя один сервер хранилища и несколько терминалов.

Мы разрабатываем новый продукт, который требует, чтобы терминалы взаимодействовали с задней частью машины через веб-сервис. Задняя часть дома реализована в виде автономного сервиса Windows с WCF. Терминальное программное обеспечение - это приложение c ++, которое вызывает нашу .Net DLL через неуправляемый / управляемый мост.

Реальная проблема, с которой мы сталкиваемся, заключается в том, что из-за ограниченности ресурсов на терминалах мы не можем выйти за пределы .Net 2.0 (и, следовательно, не можем использовать WCF). Это не проблема с точки зрения того, чтобы заставить обоих общаться друг с другом через BasicHttpBinding. Однако добавление шифрования было главной головной болью.

Мне удалось получить работающий самозаверяющий сертификат (так как сервер идет к клиентам, у CA нет вопросов.) Проблема в том, что мне пришлось пройти через шаги, которые для этого не нужны доставляемый продукт.

ОК, длинная преамбула - суть ... Автономный веб-сервис WCF, клиент .Net 2, работающий в интрасети, просто нуждается в транспортном шифровании. И мы должны иметь возможность полностью автоматизировать установку. Кроме того, мы не женаты на SSL, но, похоже, это единственное жизнеспособное решение с учетом имеющихся у нас ограничений. Буду признателен за любую помощь или совет.

1 Ответ

1 голос
/ 10 декабря 2010

Вот аналогичный вопрос, который я задал некоторое время назад:

Как настроить безопасность при вызове службы WCF из .Net 2.0 Client

Что я в итоге сделалВот что хорошо сработало, используя BasicHttpBinding:

  1. Защищенный транспорт с помощью SSL
  2. Клиенты сначала входят в веб-службу, вызывая метод Login в веб-службе.Если вход в систему успешен, он возвращает зашифрованный билет FormsAuthenticationTicket клиенту.
  3. Затем клиенты должны предоставить билет для проверки подлинности форм при каждом вызове веб-службы.Каждый метод проверяет, является ли заявка действительной, и если да, то выполняет свою работу.Если срок действия билета истек или является недействительным, клиенты должны повторно пройти аутентификацию.

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

...