Я создаю RESTful API для своего проекта на основе Play Framework 2.X.Являются ли токены на основе Cookies Restful?
Основное внимание уделяется механизму аутентификации, который я реализовал.
В настоящее время я использую SecureSocial. Последовательность действий:
- Анонимный пользователь вызывает обеспеченный API
- Сервер хватается любой печенья Id (вид маркера аутентификации) и проверяет соответствие в кэше Play 2. (кеш содержит ассоциацию между идентификатором файла cookie (произвольно сгенерированным) и идентификатором пользователя, доступным из базы данных.
- Если какой-либо согласованный, пользователь имеет право обрабатывать ожидаемую услугу.
- Если ни один не согласован, пользователь перенаправляется на вход и при заполнении действительными учетными данными (электронной почтой/паролем) сервер хранит соответствующие данные аутентификации в кеше 2-го уровня и отправляет вновь созданный Cookie, содержащий только пользовательский идентификатор (токен аутентификации) для пользователя и, конечно же, защищен через SSL.
- Пока печенье/маркер не истекает, пользователь может вызвать обеспеченный апи (конечно, если это разрешено)
Все отлично работает.
Однако после некоторого поиска я наткнулся на это post и ... Интересно, правильно ли я.
Действительно, обработка куки-файлов («сеансов» в терминах Play) нарушит правило Restfulness. Поскольку api, действительно считающийся апатридом, должен быть вызван со всеми необходимыми данными сразу (учетные данные/токены и т. Д.). Для решения, которое я выполнил, нужны оба вызова: один для аутентификации, другой для вызова защищенного API.
Я хочу, чтобы сделать вещи хорошо, и мне интересно, некоторые вещи:
Что об использовании ключей Api? Должен ли я реализовать решение, используя их вместо этого рабочего процесса
SecureSocial
? Api Keys будет отправлен на EVERY API CALL, чтобы сохранить спокойствие. Я думаю об этом, так как я хочу, чтобы мои API-интерфейсы были доступны некоторым веб-серверам, мобильным телефонам и другим клиентам. Никому из них не приходится управлять файлами cookie.Как насчет OAuth? Должен ли я действительно нуждаться в этом? Будет ли он полностью заменять использование простых ключей api? Всегда с этой целью нескольких клиентов этот известный протокол будет отличным способом управления аутентификацией и авторизацией.
Одним словом, следует ли использовать другой механизм для обеспечения соответствия требованиям?
«И рекомендуется, только если вы предоставляете API третьим сторонам» => Фактически я строю общественную социальную сеть, так ли еще достаточно, чтобы решение SecureSocial работало над файлами cookie, а не Oauth? Большое спасибо :) – Mik378
В этом случае OAuth лучше, поскольку разработчики могут использовать встроенные в OAuth libs, чтобы легко интегрироваться с вашим API. – Tal
У меня есть мой официальный клиент Javascript и мой backend как набор API-интерфейсов Rest. Является ли клиент Javascript рассмотренным как сторонний участник? Я думаю, да, иди Оутт. Правильно? – Mik378