2013-09-28 3 views
0

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

Некоторые из услуг, предоставляемых API, должны быть доступны только авторизованному пользователю. Поэтому всякий раз, когда пользователи регистрируются, они являются авторизованной стороной сервера и создается access_token, которые должны быть переданы через заголовок HTTP Auth. или в виде строки запроса для каждого запроса к защищенной службе. Моя задача состоит в том, чтобы автоматизировать авторизованные запросы и избежать компрометации «RESTfulness» API, которые мне нужно будет хранить access_token в кеше на стороне клиента в краткосрочной перспективе и в качестве файла cookie для возвращающихся пользователей.

Вопрос в том, имеет ли смысл санкционировать таким образом? Я чувствую, что мне не нужно использовать oauth на этой стадии разработки, потому что API будет использоваться только APP. Кроме того, безопасно хранить «долгоживущий» токен в кеше клиента или в файле cookie, чтобы сохранить состояние входа?RESTful API-авторизация через клиента

ответ

2

На самом деле большинство ответов, которые вы просите, уже находятся в решении, которое вы сделали, сначала позвольте мне сказать, что да, полезно использовать cookie для пользователя, чтобы вам не нужно снова выполнять проверку подлинности и снова, что уменьшает нагрузку на ваш сервер, плюс, поскольку вы получили это далеко, я уверен, что вы уже знаете, что вам нужно только один раз выполнить проверку подлинности, и сервер узнает пользователя так, как вы это делали, и остальные запросы - это в основном запросы api, сделанные для этого аутентифицированного пользователя. Предпочитаю короткий живый печенье, или позвольте мне сказать, что я предпочитаю очень короткий живой куки для этого вопроса, и этот файл cookie должен быть сделан с тайм-аутом на основе взаимодействия с сервером клиента, таким образом вы можете убедиться, что когда пользователь отключен на некоторое время, безопасно очистить сеанс от вашего сервера, и вы можете поддерживать как-то защищенную среду. Надеюсь, я ответил на ваш вопрос и прошу прокомментировать, если я вас неправильно понял.

+0

На самом деле я не уверен, что понимаю концепцию: «вам нужно только сделать аутентификацию один раз, и сервер узнает пользователя». Я мог бы, естественно, разместить серверную часть '$ _SESSION' (с учетом PHP) на указать зарегистрированное состояние, но это не будет RESTful способом, мне нужно, чтобы клиенты передавали полный объект запроса, включая токен аутентификации при каждом запросе. Вы говорите, что клиентская сторона кэширует заголовок «HTTP Auth» и передает это автоматически после первоначального запроса? –

+0

Вы правы, файлы cookie основаны на HTTP, а не независимы от протокола и не очень спокойны, но все же удается быть очень хорошим решением, и, чтобы быть понятным, клиент не должен работать с файлом cookie или пытаться его интерпретировать просто нужно доставить его на сервер, тем не менее, лучший способ сделать это - проверка подлинности запроса (см. это: http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html) , но я не очень большой поклонник передачи большого количества данных в uri –

+0

Хорошо, хорошо читайте! Кажется, я могу безопасно выполнить свой проект с помощью SSL-сертификата. Спасибо за ваше время. –

Смежные вопросы