LINUX.ORG.RU

JAVA REST и аутентификация пользователей

 , , ,


0

3

Есть приложение которое состоит из 2 частей:

1. Java сервер с REST(Джерси) и прочими сервисами (и прочими). Spring'а в проекте нет.
2. Есть веб-морда (jquery) которая с использование json взаимодействует с REST.

Вопрос: как и каким средствами можно реализовать доступ пользователей к ресурсам, то есть если пользователь залогинился он может просматривать страницу(Rest ресурс), например ../myinfo.html.

Может кто поделиться примерами как реализовать скажем так пользовательскую сессию? Есть ли какие-то входящие в пакет jersey и д.т.
Гуглил много ничего простого и хоть чуть чуть понятного не нашел. Посмотрел также книжку Jose Sandoval по ресту там тоже не нашел ничего конкретного.
Пожалуйста подскажите что-нибудь по теме.

REST по задумке stateless, т.е. никаких сессий. Для аутентификации надо получить токен от сервиса аутентификации, а потом передавать его в остальных запросах например в заголовках или в качестве дополнительного параметра.

В Jersey аутентификацию лучше проверять в фильтре. В jQuery тоже есть способ как автоматом добавить ее во все запросы

maxcom ★★★★★
()
Последнее исправление: maxcom (всего исправлений: 1)

Да, если хочется чего-то сложного вроде OAuth, то можно интегрировать Jersey и Spring Security. Это решаемо, но потребует определенного ковыряния во внутренностях

maxcom ★★★★★
()
Последнее исправление: maxcom (всего исправлений: 1)
Ответ на: комментарий от maxcom

Спасибо за ответ.
Правильно ли я понял:

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

Клиент, в данном случае web-морда, обрабатывает этот ответ и, затем, шлет ресту запрос «хочу получить доступ к myinfo.html», а рест смотри что у него есть токен и дает ему доступ. Правильно ?

2. Если я например дал пользователю токен на 2 дня, он залогинился посмотрел страницы и выключи пк. На следующий день он тоже хочет посмотреть страницы свои, и как быть в этом случае?
(Ну как я не совсем понимаю как это будет, веб морда ж не будет хранить данные.)

windofchange
() автор топика
Ответ на: комментарий от RedPossum

Спасибо, посмотрю. Чего-то думал что oauth2 используется для api и тому подобных штук.

windofchange
() автор топика
Ответ на: комментарий от windofchange

Веб-морда должна токен все время передавать серверу в каждом запросе. Очевидно что если хочется чтобы токен сохранялся на клиенте при перезагрузка страницы / браузера, то надо его где-то там хранить. В local storage например, или в cookie.

maxcom ★★★★★
()
Последнее исправление: maxcom (всего исправлений: 1)

У Jersey есть jersey-servlet модуль, который поддерживает работу с сессией, JSP и т.д, потому можно все делать как обычно. Guice+Jersey - бомбовая комбинация. Это не совсем RESTful, так как за тебя будут управлять сессией, причем она будет гвоздями прибита к ноду. Не говоря о том что у тебя вообще будет сессия

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Ответ на: комментарий от vertexua

Честно говоря ждал ответа от тебя)

У Jersey есть jersey-servlet модуль, который поддерживает работу с сессией, JSP и т.д, потому можно все делать как обычно.

За это спасибо, но JSP не использую и javax.servlet.* тоже нет и не будет, стоит ли смотреть в эту сторону?

Guice+Jersey

А примера такого простого что что бы работало нет случайно под рукой? А минут так по-быстрому гуглянул, ничего очевидного не увидел

windofchange
() автор топика
Ответ на: комментарий от windofchange

на этом этапе у тебя вся суть реста накрывается чугунным тазом, и он превращается в тыкву - тупой http rpc

Deleted
()
Ответ на: комментарий от iZEN

Спасибо, это я видел. Я предпочитаю его и использовать, т.к. интеграции jersey и spring имеет массу недостатков

maxcom ★★★★★
()
Ответ на: комментарий от iZEN

Меньше не нашел, там еще много другой пурги, но можно идти от основных классов

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.