2

Я создаю RESTful API для своего проекта на основе Play Framework 2.X.Являются ли токены на основе Cookies Restful?

Основное внимание уделяется механизму аутентификации, который я реализовал.

В настоящее время я использую SecureSocial. Последовательность действий:

  1. Анонимный пользователь вызывает обеспеченный API
  2. Сервер хватается любой печенья Id (вид маркера аутентификации) и проверяет соответствие в кэше Play 2. (кеш содержит ассоциацию между идентификатором файла cookie (произвольно сгенерированным) и идентификатором пользователя, доступным из базы данных.
  3. Если какой-либо согласованный, пользователь имеет право обрабатывать ожидаемую услугу.
  4. Если ни один не согласован, пользователь перенаправляется на вход и при заполнении действительными учетными данными (электронной почтой/паролем) сервер хранит соответствующие данные аутентификации в кеше 2-го уровня и отправляет вновь созданный Cookie, содержащий только пользовательский идентификатор (токен аутентификации) для пользователя и, конечно же, защищен через SSL.
  5. Пока печенье/маркер не истекает, пользователь может вызвать обеспеченный апи (конечно, если это разрешено)

Все отлично работает.

Однако после некоторого поиска я наткнулся на это post и ... Интересно, правильно ли я.

Действительно, обработка куки-файлов («сеансов» в терминах Play) нарушит правило Restfulness. Поскольку api, действительно считающийся апатридом, должен быть вызван со всеми необходимыми данными сразу (учетные данные/токены и т. Д.). Для решения, которое я выполнил, нужны оба вызова: один для аутентификации, другой для вызова защищенного API.

Я хочу, чтобы сделать вещи хорошо, и мне интересно, некоторые вещи:

  • Что об использовании ключей Api? Должен ли я реализовать решение, используя их вместо этого рабочего процесса SecureSocial? Api Keys будет отправлен на EVERY API CALL, чтобы сохранить спокойствие. Я думаю об этом, так как я хочу, чтобы мои API-интерфейсы были доступны некоторым веб-серверам, мобильным телефонам и другим клиентам. Никому из них не приходится управлять файлами cookie.

  • Как насчет OAuth? Должен ли я действительно нуждаться в этом? Будет ли он полностью заменять использование простых ключей api? Всегда с этой целью нескольких клиентов этот известный протокол будет отличным способом управления аутентификацией и авторизацией.

Одним словом, следует ли использовать другой механизм для обеспечения соответствия требованиям?

ответ

1

Это довольно старый Q, но все же стоит ответить, поскольку это может заинтересовать других. REST делает мандат безгражданства, но авторизация является распространенным исключением при реализации. В описанном вами решении требуется единый процесс авторизации, за которым следуют многочисленные вызовы служб на основе авторизованного файла cookie. Это аналоговые ключи api или OAuth. Нет ничего плохого в файлах cookie, если служба не имеет высокой безопасности и что вы истекаете после этого в разумные сроки. Интеграция OAuth в вашу службу звучит немного излишне и рекомендуется, только если вы предоставите API третьим сторонам (вне вашей организации).

+0

«И рекомендуется, только если вы предоставляете API третьим сторонам» => Фактически я строю общественную социальную сеть, так ли еще достаточно, чтобы решение SecureSocial работало над файлами cookie, а не Oauth? Большое спасибо :) – Mik378

+0

В этом случае OAuth лучше, поскольку разработчики могут использовать встроенные в OAuth libs, чтобы легко интегрироваться с вашим API. – Tal

+0

У меня есть мой официальный клиент Javascript и мой backend как набор API-интерфейсов Rest. Является ли клиент Javascript рассмотренным как сторонний участник? Я думаю, да, иди Оутт. Правильно? – Mik378

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