Как реализовать API REST без сохранения состояния - PullRequest
7 голосов
/ 05 октября 2010

Я работаю над REST API, который будет использоваться разработчиками, пишущими мобильные приложения. Пользователи смогут использовать сторонние сервисы (Google, Twitter и т. Д.) Для аутентификации, в основном это выполняется OAuth (в зависимости от рассматриваемой услуги). Мы используем двухстороннюю OAuth между клиентским приложением и сервером API (где ключ / секрет потребителя зависит от приложения, разработчик получает его с нашего сайта, когда приложение регистрируется там).

Моя проблема в том, как справиться с отслеживанием аутентификации пользователя без сохранения состояния. У меня нет учетных данных пользователей для отправки в каждом запросе. Я мог бы создать уникальный session_id, когда пользователь входит в систему, а затем требовать этого в каждом запросе к REST API. Есть ли другие решения моей проблемы? Вызывает ли использование уникального идентификатора сеанса для идентификации пользователя какие-либо проблемы с точки зрения API REST без сохранения состояния?

1 Ответ

10 голосов
/ 05 октября 2010

Отказ от ответственности: я ни в коем случае не эксперт по безопасности.

Не называйте это session_Id. Назовите его токеном аутентификации и передайте HTTP-заголовок авторизации, используя вашу собственную схему аутентификации. См. Например, Google AuthSub .

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

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