Требуется ли для API REST пароль и логин при каждом запросе? - PullRequest
5 голосов
/ 29 января 2012

Предположим, я разрабатываю сайт социальной сети и решаю, что ядро ​​приложения должно быть полностью REST'ом.Пользователь входит в систему с паролем.Теперь мой вопрос: для каждого запроса требуются пары пароля и логина (при условии, что вам необходимо указать свою личность) в конце URL-адреса, например www.site.com/index.php?p=pass&l=login?Я бы немного нервничал, спрашивая об этом при каждом запросе.Я знаю, что я что-то упускаю ... это не может быть так, потому что кто-то может подглядывать в пакеты, легко захватывать пароль и входить в систему.Я не думаю, что выполнение всех запросов в HTTPS имело бы смысл (я читал, что это облагает налогом ресурсы).

Поэтому, пожалуйста, заполните недостающую часть, которую мне нужно понять.

Ответы [ 3 ]

12 голосов
/ 29 января 2012

Прежде всего, если вы не знаете, что использование SSL слишком дорого для вас, используйте SSL.Безопасность важнее оптимизации производительности.

Теперь о передаче имен пользователей и паролей: обычно у вас есть «токен доступа к API» или тому подобное.На самом деле это не имя пользователя и пароль, но когда у кого-то он есть, ему предоставляется возможность делать запросы API.Они могут иметь ограниченный или неограниченный срок действия, как вам нравится.Вы даже можете сделать токен подписью - пользователь подписывает запрос некоторым ключом, и вы проверяете подпись.

Но да, так как каждый запрос API не зависит от последнего, вы будете иметь либоиспользовать аутентификацию HTTP Basic или ее эквивалент или передавать маркер API (или другое подписывающее устройство) с каждым запросом.

6 голосов
/ 29 января 2012

Как правило, вы вызываете метод входа в систему, который генерирует токен, который можно повторно использовать во всех следующих запросах.

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

Вы можете увидеть, как OAuth используется API Flickr для обеспечения аутентификации на диаграмме ниже,В этом сценарии временный токен используется для запроса постоянного токена и секрета токена.

OAuth Flickr diagram

Взято из: http://www.flickr.com/services/api/auth.oauth.html#access_token

1 голос
/ 29 января 2012

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

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