Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top