Как защитить REST API для мобильных приложений? - PullRequest
6 голосов
/ 01 марта 2012

Я пытаюсь добавить REST-интерфейс в Django для мобильного клиента. Мобильный клиент будет использовать JSON поверх HTTPS. Я не смог найти «лучший» способ сделать это для мобильных устройств. Из поиска вокруг, кажется, что # 2 более благоприятен для # 1:

  1. Используйте HTTP-аутентификацию и установите сеанс на основе файлов cookie. Все транзакции будут выполняться по HTTP, а сообщения JSON будут содержать только команды или данные.
  2. Передайте имя пользователя и пароль (зашифрованные) в каждом сообщении JSON для всех транзакций и не полагайтесь на сеансы на основе файлов cookie.

Ответы [ 4 ]

8 голосов
/ 02 марта 2012

Я бы порекомендовал сначала отправить имя пользователя / пароль при входе в систему. JSON передаст обратно authToken или accessToken, который мобильное устройство отправит обратно для всех последующих вызовов. Затем вы проверите, чтобы убедиться, что authToken действителен. Это подход многих API. В своей базе данных они свяжут ключ API с учетной записью пользователя, с которой они вошли.

3 голосов
/ 01 марта 2012

OAuth является излишним, если вы не хотите предоставлять эти услуги другим разработчикам (к которым они будут обращаться от имени ваших конечных пользователей). Лучше использовать вариант 2, но я бы рекомендовал использовать дайджест-аутентификацию, а не парольную аутентификацию. Объедините это с SSL, и вы определенно готовы к работе.

1 голос
/ 01 марта 2012

Номер 2 предпочтительнее, и вместо того, чтобы бросать свой собственный, я бы рекомендовал использовать OAuth-аутентификацию, если это возможно.И клиентские, и серверные библиотеки теперь легко доступны для использования на большинстве платформ.Проверьте http://oauth.net для деталей.

0 голосов
/ 01 марта 2012

До тех пор, пока вы используете реальное шифрование, а не base64 или какой-то собственный алгоритм запутывания, # 2 - это хорошо и модно.Возможно, вы также захотите рассмотреть маршрут, по которому идут многие компании, который связывает ключ API с именем пользователя.

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