Аутентификация/безопасность RESTful API

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

как лучше всего это сделать?

  • наличие пар открытый/закрытый ключ
  • стать поставщиком OAuth
  • HTTP-аутентификация (мне кажется очень слабой)
  • Другой??

person aschmid00    schedule 27.09.2012    source источник


Ответы (2)


Во-первых, откажитесь от HTTP-аутентификации. Не рекомендуется использовать его в настоящем REST API, поскольку он находится в файлах cookie.

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

person Christopher Ramírez    schedule 28.09.2012
comment
Спасибо, похоже библиотека очень старая, есть ли у нас альтернативные? - person Cuong Thai; 28.09.2012
comment
Просто любопытно: есть ли у вас ссылка на REST API и несовместимость файлов cookie? - person Drux; 07.03.2015
comment
@Drux, REST должен быть без сохранения состояния, это означает, что запрос не должен зависеть от предыдущего (то есть запроса аутентификации). - person Christopher Ramírez; 08.04.2015
comment
@ChristopherRamírez Достаточно справедливо в чистом смысле (хотя, возможно, можно утверждать, что токены аутентификации OAuth2 также несут немного состояния). - person Drux; 08.04.2015
comment
HTTP Auth обычно ссылается на en.wikipedia.org/wiki/Basic_access_authentication, который не имеет состояния, потому что вы добавляете заголовок к каждому запросу. Так что это не зависит от предыдущего. Пока он защищен https, он безопасен. - person Erik Forsberg; 23.09.2016

Вы можете использовать учетную запись службы Google для аутентификации пользователя. Тем не менее, люди по-прежнему могут зарегистрировать учетную запись и использовать ваш API, и, безусловно, ваш счет за движок приложения возрастет. Они только что представили Google Cloud Endpoints на Google I/O 2012. У вас будет идентификатор клиента, который будет использоваться только в вашем клиентском приложении (Android, iOS).

Google I/O 2012 — Создание приложений для Android, использующих веб-API, с Янивом Инбаром и Шрирамом Сарупом

Google I/O 2012 — Создание серверных частей Mobile App Engine для Android, iOS и Интернета

Если вы заинтересованы, вы должны попробовать подписаться на доверенного тестировщика на

http://endpoints-trusted-tester.appspot.com/

person Cuong Thai    schedule 27.09.2012
comment
как упоминалось выше, у меня есть собственный механизм аутентификации/членства, и я не использую учетные записи Google для аутентификации. проверит видео ввода/вывода. не могу найти примеров того, как конечные точки будут выглядеть в python. - person aschmid00; 27.09.2012
comment
К сожалению, у нас не было готовых примеров Python на вводе-выводе, но недавно мы поделились некоторым примером кода Python с доверенными тестировщиками. Я определенно призываю вас зарегистрироваться. - person Dan Holevoet; 27.09.2012