Как я должен защитить свои WCF Rest / JSON Services для использования с приложением iOS / Android? - PullRequest
9 голосов
/ 07 сентября 2011

Мы находимся в процессе создания нового стека веб-приложений. Внутренние функциональные возможности будут в значительной степени основываться на службах, но, поскольку некоторые из этих служб должны быть доступны общедоступному Интернету, мне необходимо обеспечить их безопасность. Мне частично удалось заблокировать URL-адреса служб, используя стандартную модель членства / роли поставщика. В данный момент у меня возникают проблемы: если бы мы когда-либо создавали приложение для iOS (или Android) поверх нашего стека служб, как бы мы поступили с безопасностью?

Я полностью открыт для предложений. Пока что я включил некоторую информацию о настройке.

  1. Веб-сайт ASP.NET, использующий членство в SQL / поставщик ролей / проверку подлинности с помощью форм, работающий по HTTPS-соединению. Только страницы по умолчанию / Логин / FAQ являются общедоступными. Все остальные страницы находятся в папке с именем "/ Secure", которая требует вашей аутентификации.

  2. WCF WebService. Все поддерживаемые функции предоставляются через этот сервис. Конечные точки доступны только в локальной интрасети. Код веб-сайта ASP.NET, стоящий за сайтом, говорит со службой, используя стандартную справочную службу.

  3. WCF REST / JSON Services. Некоторые из перечисленных выше функций повторно включены в службу WCF REST / JSON. Это было настроено с использованием « шаблона WCF REST 40 ». Затем служба направляется с помощью System.Web.Routing в «/ Secure / jsonsvc / *». Поскольку он находится в папке / Secure, он наследует безопасность членства / roleprovider для любого запроса. например xmlhttp вызывает этот сервис из клиентского виджета JQuery, будет работать только для пользователей, которые уже вошли на наш сайт.

  4. В будущем эти же службы WCF Rest / JSON могут потребоваться внешним приложением (например, приложением IPad). Как лучше всего это сделать, учитывая отсутствие HTTP-сайта / сеанса / контекста входа.

1 Ответ

11 голосов
/ 08 сентября 2011

Как вы знаете, проверка подлинности на основе форм ASP.NET использует cookie для поддержки сеанса, прошедшего проверку подлинности. Оставляя в стороне любые аргументы относительно того, является ли это наилучшим способом обработки вещей в рамках методологии REST, я не вижу технической причины, по которой вы не сможете использовать тот же файл cookie в своем приложении iOS.

Очевидно, что вам понадобится либо простая веб-страница входа (отображаемая в вашем приложении через UIWebView), либо метод REST входа, чтобы сначала вернуть вам cookie, а затем при последующих запросах вы просто возвращаете cookie с запрос (здесь немного информации об обработке файлов cookie в iOS с использованием библиотеки ASIHTTP ).

Несколько важных моментов, о которых следует помнить, это то, что вы не имеете никакого контроля над беспроводной сетью, на которой находится устройство, поэтому вам обязательно следует использовать SSL, а также учитывать ошибки / повторные попытки / и т. Д. метод REST для входа в систему так же, как и для страницы входа (если не больше).

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...