Аутентификация в Apache Jersey без использования Http-аутентификации? - PullRequest
4 голосов
/ 04 июля 2011

Я создаю RESTful Webservice с использованием Apache Jersey. Теперь я хочу, чтобы вам потребовалась аутентификация для некоторых запросов к нему. Используя типичный REST-подход, аутентификация должна выполняться через HTTP-аутентификацию. Но пост здесь упоминает, что лучший способ сделать это - использовать куки. Я думаю, что в обсуждении есть несколько важных моментов. (Как) Можно ли заставить мою аутентификацию на Джерси работать с файлами cookie? Нужен ли для этого еще один фреймворк?

1 Ответ

6 голосов
/ 04 июля 2011

В Джерси используется механизм аутентификации, заявленный в прилагаемом веб-приложении web.xml, практически либо HTTP-аутентификация (через SSL), либо аутентификация на основе форм cookie.

Если вы хотите использовать аутентификацию сеансов на основе файлов cookie, пользователи должны сначала пройти аутентификацию с помощью веб-службы, чтобы создать сеанс, который можно использовать для проверки их личности для будущих вызовов. Спецификация сервлета предоставляет стандартизированный способ аутентификации с использованием файлов cookie и сеанса с использованием веб-формы, который, однако, не совместим с типом приложения веб-службы. Таким образом, вы, вероятно, захотите подготовить какое-то специальное решение, чтобы пользователи могли отправлять свои учетные данные посредством размещения документа XML или JSON. Проблема этого метода заключается в том, что если пользователь выполняет вызов ресурса без предварительной аутентификации или после истечения сеанса, его необходимо будет перенаправить или получить код ошибки определенного типа. Не невозможно, но это добавляет сложности вашему веб-сервису.

На данный момент вам нужно задаться вопросом, не является ли использование HTTP Auth лучшим выбором для приложений в стиле веб-служб. Недавно мы создали веб-сервис, используя Джерси и HTTP-аутентификацию в качестве механизма аутентификации. Затем мы создаем Javascript-интерфейс поверх него. Клиент Javascript всегда отправляет заголовки аутентификации в веб-службу, чтобы пользователь никогда не сталкивался с окном аутентификации HTTP из браузера. Возможно, лучшее из обоих миров.

...