Токены и сеансы OAuth в REST

В другую минуту я прочитал статью об OAuth. В нем описываются особенности обмена токенами между клиентом и поставщиком услуг во время серии запросов.

В статье также упоминается, что OAuth приобретает значительную популярность в RESTful API как слое авторизации. Как я понял, REST должен храниться полностью без сохранения состояния.

Вопрос: неужелиЭто повторный обмен токенами REST "без гражданства " принцип? ИМХО токены можно рассматривать как своего рода идентификатор сессии, можетт они?

Ответы на вопрос(2)

Аутентификация - это состояние, которое нужно каким-то образом отслеживать при работе с веб-взаимодействиями. В конечном счете, если ваше приложение успокаивается или нет, сервер должен иметь возможность отслеживать каждого пользователя "аутентифицированное государство " и, к сожалению, это требует какого-то обхода скрытой природы HTTP без состояния и каких-либо дополнительных транспортов / методов (таких как REST) поверх этого.

Следовательно, для разработки любого вида аутентифицированного приложения где-то должен быть соблюден принцип состояния, и если это так, то это OAuth поверх REST, вот как это должно быть!

Решение Вопроса

Токены OAuth явно являются идентификатором сеанса, взаимодействие не является состоянием между запросами в протоколе согласования токенов OAuth, поскольку запросы должны выполняться в определенной последовательности, и для них требуется хранилище для каждого клиента на сервере, так как необходимо отслеживать такие вещи, как они были выпущены. Так что да, OAuth действительно нарушает строгие принципы архитектуры RESTful.

К сожалениюреальный мирTM бороться с тем, где нам нужно делать такие вещи, как позволить приложениям аутентифицироваться от имени отдельных лиц без запроса их пароля, что OAuth делает довольно хорошо. Было бы невозможно реализовать подобную безопасную схему аутентификации без такого состояния. Действительно, одно из изменений, требуемых OAuth (1.0a), было добавитьБольше укажите протокол согласования токена для снижения риска безопасности.

Итак, торпеда ли этопринцип безгражданства? Да. Это имеет значение? Нет, если вы не живете в башне из слоновой кости :-)

 Jordan Reiter09 июл. 2010 г., 23:25
Однако после того, как аутентификация OAuth обработана, она может фактически не сохранять состояния - токен OAuth сохраняется клиентом и отправляется вместе с каждым запросом REST в заголовке авторизации.
 johndodo29 июл. 2011 г., 08:55
@Jordan: токен OAuth сохраняется на сервере, чтобы избежать повторной аутентификации, поэтому состояние сохраняется как на клиенте, так и на сервере. Так что это с состоянием. Грег резюмирует это довольно мило.
 Richard Levasseur16 нояб. 2009 г., 02:43
+1 за приведение реального мира в ОТДЫХ
 indivisible31 мая 2017 г., 15:08
@johndodo, этоs разница между двумя и тремя ногами. 2-legged оценивается по-новому при каждом запросе, и поэтому он может не иметь состояния (с точки зрения API, клиенты могут сохранять учетные данные для повторного использования), где 3-legged включает генерацию, сохранение и поиск токенов сеанса и поэтому никогда не может быть полностью без гражданства.
 Boldewyn10 нояб. 2009 г., 08:39
Мне нравится Реальный Мир (ТМ). Спасибо за ответ!

Ваш ответ на вопрос