Аутентификация в Джерси - PullRequest
4 голосов
/ 27 февраля 2012

Я хочу реализовать аутентификацию для моего сервера / клиента REST на основе Jersey0, но я не уверен, как именно выложить код.

В основном для каждой операции у меня есть 2 метода - 1 со стороны сервера, 1 со стороны клиента.

Я сузил алгоритм - я собираюсь использовать стратегию амазонки с HMAC.

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

Я готов услышать ваши комментарии по этому поводу?

1 Ответ

4 голосов
/ 28 февраля 2012

Клиентская сторона:

Вам просто нужно создать ClientFilter и добавить его в цепочку фильтров. У вас может быть два клиента (или более), например, один для аутентифицированных запросов, а другой для других запросов, поэтому вы не должны тратить ресурсы.

см. http://jersey.java.net/nonav/apidocs/1.12/jersey/com/sun/jersey/api/client/filter/ClientFilter.html

Серверная сторона:

Как и на стороне сервера, вы можете реализовать Request / ResponseContainerFilter (s), который будет обрабатывать аутентификацию. Эти фильтры являются глобальными по умолчанию, но вы можете сузить область их применения, реализовав ResourceFilterFactory, и затем присоединять их только к соответствующим ресурсам (конечным точкам).

Или у вас может быть 2 войны: одна за «безопасные» ресурсы, а другая за другую.

см.
http://jersey.java.net/nonav/apidocs/1.12/jersey/com/sun/jersey/spi/container/ResourceFilterFactory.html
http://jersey.java.net/nonav/apidocs/1.12/jersey/com/sun/jersey/spi/container/ContainerRequestFilter.html
http://jersey.java.net/nonav/apidocs/1.12/jersey/com/sun/jersey/spi/container/ContainerResponseFilter.html

...