Я понимаю, что есть масса вопросов по этой теме, и я изучаю это уже пару дней. Я хочу, чтобы мой вопрос был как можно более конкретным, так как я еще не получил полного представления о наилучшем подходе.
В настоящее время у меня есть развитый сайт django, где веб-клиент, вероятно, на 95% общается через django-поршневой json REST api. Остальные 5% - это некоторые оставшиеся функции входа в систему, которые по-прежнему проходят через формы POST с защитой CSRF.В идеале я хотел бы переместить остаток также в REST api.
Я подошел к тому моменту, когда мне нужно найти лучшее рекомендуемое решение для защиты как веб-клиента, так и мобильного клиента (приложение еще не разработано) с возможностью многократного использования и сосуществования. Я прочитал много сообщений, в которых в конечном итоге рекомендовал OAuth2 (и https) для мобильной стороны, но я все еще не понимаю, как настроить безопасность веб-клиента. Я также пытаюсь понять аспект OAuth2 и могу ли я использовать двухногую форму. В его нынешнем виде веб-клиент аутентифицирован с помощью django. Технически функция jsonp все еще активна в поршне, поэтому я думаю, что любой может использовать api из стороннего приложения, если в его веб-сеансе есть файлы cookie аутентификации?
Краткое описание использования моего api:
Сводка моих вопросов:
Я ищу конкретные рекомендации для django-поршня для решения этих проблем. Я уже развил свой проект и начал играть с этой разветвленной версией поршня: https://bitbucket.org/jespern/django-piston-oauth2
У меня была одна идея - создать ресурс поршня, который первым проверяет, есть ли у него то же происхождение, а затем только обеспечивает проверку подлинности django, в противном случае он применяет oauth2, но я не уверен, подходит ли это вообще.
Судя по информации, предоставленной Спайком, я начал работать с поршнем-oauth2. В итоге я создал его вилку, чтобы добавить некоторые исправления для нерелевантного django (mongodb), и я раздвоил пример кого-то, чтобы также использовать oauth2 и поршень:
https://bitbucket.org/justinfx/django-piston-oauth2-nonrel -example
Теперь дело только в том, что я действительно подключил это к моему собственному проекту и заставил его работать. Но все эти тесты работают отлично.