RESTful Сервис Аутентификация - PullRequest
       19

RESTful Сервис Аутентификация

8 голосов
/ 09 февраля 2012

В соответствии со спецификацией REST служба должна быть без сохранения состояния;но тогда становится трудно включить аутентификацию.В некоторых материалах, которые я читал, говорилось, что «сделать REST без изменений не конец света».Но дело не в этом, дело в том, чтобы следовать спецификации и быть последовательным.

Итак, я задаю этот вопрос здесь в надежде, что кто-то может направить меня в правильном направлении.Я работаю с Spring MVC для создания службы REST.У меня нет взглядов.Это настоящая служба REST, которая потребляет / производит JSON.Мне нужно иметь механизм аутентификации (и авторизации в будущем) для этого приложения, который не имеет состояния и соответствует спецификации REST.Клиент будет написан на JavaScript (Backbone.js, CoffeeScript) и примет имя пользователя / пароль от пользователя.Затем он отправит эту информацию на сервер.

Как я могу добиться подлинной аутентификации (и авторизации) без сохранения состояния в приложении на основе Spring?

Дайджест-аутентификация по SSL - это путь??

Ответы [ 3 ]

2 голосов
/ 10 февраля 2012

Вы изучили, как работает Spring Security?Используя Spring Security, я смог добавить пользовательские HTTP-заголовки авторизации от клиента в запросе REST.Это извлеченная сторона сервера, запрашивающий пользователь аутентифицирован, и есть возможность авторизовать доступ к определенным ресурсам.

2 голосов
/ 09 февраля 2012

Управление сессиями отличается от государственного управления.

Серверная сторона во время рукопожатия может генерировать токен, и каждый раз, когда клиент делает вызов, он должен будет добавить этот токен либо в заголовок, либо в другое место, где ваш сервер сможет анализировать и решать, можете ли выразрешить продолжение вызова.

Серверу не нужно поддерживать какое-либо состояние, чтобы проверить правильность этого токена, что можно сделать с помощью некоторого алгоритма.

1 голос
/ 10 февраля 2012

Вы можете использовать обычную или дайджест-проверку подлинности по SSL, что ни в коем случае не подразумевает ничего существенного в состоянии. Также может быть файл cookie, отправленный обратно сервером, который ваш клиент должен будет отправить обратно, когда он выполнит дальнейшие запросы (я считаю , что код Javascript будет обрабатывать все это для вас). Возможны и другие механизмы аутентификации, но они более сложны и не обязательно подходят. (Другой ключ без надлежащего состояния - это аутентифицированный клиентом SSL, но для этого требуется, чтобы в браузере была установлена ​​клиентская пара ключей SSL, а сервер знал, что означает это удостоверение, и его развертывание немного сложнее.)

На стороне сервера используйте Spring Security, так как с этим довольно легко справиться. Хорошо работает с Spring MVC.

...