Рекомендуемая конфигурация как для веб-клиента, так и для безопасности мобильного REST api

Я понимаю, что есть масса вопросов по этой теме, и я изучаю это уже пару дней. Я хочу, чтобы мой вопрос был как можно более конкретным, так как я еще не получил полного представления о наилучшем подходе.

В настоящее время у меня есть развитый сайт django, где веб-клиент, вероятно, на 95% общается через django-поршневой json REST api. Остальные 5% - это некоторые оставшиеся функции входа в систему, которые по-прежнему проходят через формы POST с защитой CSRF.В идеале я хотел бы переместить остаток также в REST api.

Я подошел к тому моменту, когда мне нужно найти лучшее рекомендуемое решение для защиты как веб-клиента, так и мобильного клиента (приложение еще не разработано) с возможностью многократного использования и сосуществования. Я прочитал много сообщений, в которых в конечном итоге рекомендовал OAuth2 (и https) для мобильной стороны, но я все еще не понимаю, как настроить безопасность веб-клиента. Я также пытаюсь понять аспект OAuth2 и могу ли я использовать двухногую форму. В его нынешнем виде веб-клиент аутентифицирован с помощью django. Технически функция jsonp все еще активна в поршне, поэтому я думаю, что любой может использовать api из стороннего приложения, если в его веб-сеансе есть файлы cookie аутентификации?

Краткое описание использования моего api:

  1. API - это полностью частный интерфейс для серверного приложения
  2. Было бы идеально, если бы API не мог широко повторно использоваться сторонними гибридными веб-клиентами.
  3. Данные не являются конфиденциальными. Это просто сайт социального типа, где самая личная информация - это основная информация профиля пользователя, такая как электронные письма, адреса и т. Д.

Сводка моих вопросов:

  1. Является ли OAuth2 лучшим рекомендуемым подходом для защиты доступа к мобильным приложениям? Имеет ли это какое-либо отношение к аспекту веб-клиента? И если рекомендуется OAuth2, должен ли это быть ключ для всего приложения, версией которого являются выпуски приложения?
  2. Следует ли веб-клиенту использовать CSRF, который передается через ajax, и просто отключить jsonp, чтобы обеспечить его всегда одно и то же происхождение? В принципе, рассматриваю ли я безопасность веб-клиента отдельно?
  3. Как мне подойти к организации URL-адресов / экземпляров приложений / поддоменов или чего-то еще, что рекомендуется для обеспечения безопасности Интернета и мобильных устройств? Нужны ли мне просто отдельные префиксы URL-адресов, один для мобильных устройств, использующих другие правила?

Я ищу конкретные рекомендации для django-поршня для решения этих проблем. Я уже развил свой проект и начал играть с этой разветвленной версией поршня: https://bitbucket.org/jespern/django-piston-oauth2

У меня была одна идея - создать ресурс поршня, который первым проверяет, есть ли у него то же происхождение, а затем только обеспечивает проверку подлинности django, в противном случае он применяет oauth2, но я не уверен, подходит ли это вообще.

Обновление 01.01.2012

Судя по информации, предоставленной Спайком, я начал работать с поршнем-oauth2. В итоге я создал его вилку, чтобы добавить некоторые исправления для нерелевантного django (mongodb), и я раздвоил пример кого-то, чтобы также использовать oauth2 и поршень:

https://bitbucket.org/justinfx/django-piston-oauth2-nonrel -example

Теперь дело только в том, что я действительно подключил это к моему собственному проекту и заставил его работать. Но все эти тесты работают отлично.

9
задан jdi 2 February 2012 в 00:05
поделиться