Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Авторизация в REST  [new]
AndronovMV
Member

Откуда: Тольятти
Сообщений: 131
Добрый день, коллеги!

Необходимо написать REST-сервис для получения и изменения данных БД.
Взаимодействие будет: Andoid -> HttpClient (OkHttpClient)->REST-сервис

Проблемное место:
Пользователь Android`а при входе в приложение должен авторизоваться (логин/пароль)
Авторизация идет в БД (т.е. пользователь в БД)
После удачной авторизации, по моей задумке, на сервисе должен сгенерится некий токен, который хранится где-то в недрах сервиса, например в сеансе + отсылается ответом в андройд. Далее андройд приложение общается с REST-сервисом уже посредством проверки токена (сравнение клинтского с сервисным).

Не понимаю как мне реализовать такую схему. Для REST сервиса не существует такого понятия как сессия, т.к. это не сервлет и его задачу другая. Я конечно могу токены ложить в БД, напротив пользователя, но как мне кажется это не правильно. Любой кто имеет доступ к таблице пользователей, может посмотреть его токен и сделать запрос по него на приватные данные.

Есть предложения? )
5 июл 19, 15:46    [21921682]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
chpasha
Member

Откуда:
Сообщений: 7988
AndronovMV
Любой кто имеет доступ к таблице пользователей

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

Если "сессия" не нужна или нежелательна, то пусть клиент при каждом запросе просто авторизуется. Добавить для этого interceptor в okhttp и все.
5 июл 19, 16:02    [21921695]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
AndronovMV
Member

Откуда: Тольятти
Сообщений: 131
chpasha
AndronovMV
Любой кто имеет доступ к таблице пользователей

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

1. Для системных и служебных таблиц для всех пользователей кроме админов права только на чтение, так что они там не хозяева.
chpasha
Если "сессия" не нужна или нежелательна, то пусть клиент при каждом запросе просто авторизуется. Добавить для этого interceptor в okhttp и все.

2. Оне не то чтобы не нужна или нежелательна, она просто не работает для REST-сервиса. Любое обращение с сервису не из браузера (из HttpClient клиента) порождает новую сессию на сервисе, что является проблемой для поддержания связей с клиентом.
5 июл 19, 16:10    [21921708]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
AndronovMV
Member

Откуда: Тольятти
Сообщений: 131
Помимо BASIC-авторизации больше нет вариантов?
5 июл 19, 16:11    [21921710]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
shaden
Member

Откуда: Башкортостан
Сообщений: 165
Мне кажется, что эта статья Вам бы помогла.
https://www.baeldung.com/securing-a-restful-web-service-with-spring-security
5 июл 19, 16:36    [21921728]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
Помимо BASIC-авторизации больше нет вариантов?
forms. Настройка 10 мин в веб.xml
5 июл 19, 16:40    [21921731]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
Пользователь Android`а
может браузер в андроиде?)) :))
5 июл 19, 16:42    [21921733]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
сгенерится некий токен
проще без токенов, сессия и forms авторизация
5 июл 19, 16:44    [21921735]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
Оне не то чтобы не нужна или нежелательна, она просто не работает для REST-сервиса. Любое обращение с сервису не из браузера (из HttpClient клиента) порождает новую сессию на сервисе, что является проблемой для поддержания связей с клиентом.
конечно. Другая программа в андроиде порождаетнву сесссию.
Даже вкладка может)
5 июл 19, 16:46    [21921737]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
AndronovMV
Member

Откуда: Тольятти
Сообщений: 131
PetroNotC Sharp
AndronovMV
Пользователь Android`а
может браузер в андроиде?)) :))

Не не) HttpClient. Я Использую retrofit
5 июл 19, 18:38    [21921794]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
chpasha
Member

Откуда:
Сообщений: 7988
AndronovMV
Для системных и служебных таблиц для всех пользователей кроме админов права только на чтение, так что они там не хозяева

ну так в чем проблема, надо забрать права даже на чтение у таблицы с "сессиями" и все

AndronovMV
просто не работает для REST-сервиса

отлично все работает. На спринг уже ссылались тут, в двух словах EnableJdbcHttpSession + HeaderHttpSessionIdResolver - будет при аутентификации кидать в header токен-аутентификации, который можно передавать опять же таки в header при всех запросах.
5 июл 19, 18:57    [21921798]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
PetroNotC Sharp
пропущено...
может браузер в андроиде?)) :))

Не не) HttpClient. Я Использую retrofit
ну дак при forms все делает бэкенд.
Тебе в клиенте в поле только поставить логин и пароль.
5 июл 19, 19:11    [21921801]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
chpasha,
Боюсь у него спринга нет и не будет. Раз он столько про бд пишет.
5 июл 19, 19:12    [21921802]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
ТС, не понял в чем проблема.
По документации, библиотка поддерживает базовую (заголовки запроса) и через токены (JWT на бэке).
Что не работает то?
5 июл 19, 19:35    [21921806]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
Для REST сервиса не существует такого понятия как сессия, т.к. это не сервлет и его задачу другая.
тут можно поспорить. Если сервлет выдает json то это тот же rest.
Я лично из session based/token based больше предпочитаю сессию.
Странно что либа ведра не умеет работать с сессией. Там ведь просто между запросами нужно держать переменную и не обнулять.
Имхо.
5 июл 19, 20:37    [21921821]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
AndronovMV
Member

Откуда: Тольятти
Сообщений: 131
PetroNotC Sharp
chpasha,
Боюсь у него спринга нет и не будет. Раз он столько про бд пишет.

Все верно!
Ну придется посмотреть в на спринг
8 июл 19, 09:08    [21922444]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
AndronovMV
PetroNotC Sharp
chpasha,
Боюсь у него спринга нет и не будет. Раз он столько про бд пишет.

Все верно!
Ну придется посмотреть в на спринг
хммм. И как андроид программисты бэк без спринга пишут?
Тут главное кто одеяло на себя перетянет). Бэк или фронт.
8 июл 19, 10:55    [21922521]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
andreykaT
Member

Откуда:
Сообщений: 2194
PetroNotC Sharp
AndronovMV
пропущено...

Все верно!
Ну придется посмотреть в на спринг
хммм. И как андроид программисты бэк без спринга пишут?
Тут главное кто одеяло на себя перетянет). Бэк или фронт.

а зачем тебе бэк писать? бэк в принципе можно писать на чем угодно ))
8 июл 19, 12:55    [21922611]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3923
AndronovMV
Любой кто имеет доступ к таблице пользователей, может посмотреть его токен и сделать запрос по него на приватные данные.

Любому, у которого есть доступ в базу, проще сразу посмотреть приватные данные, а не заморачиваться с токенами!
8 июл 19, 13:04    [21922619]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
andreykaT
а зачем тебе бэк писать? бэк в принципе можно писать на чем угодно ))
не понял вопрс. Автор спросил как делать рест в топике java. Можно и пыхе. Тогда что за вопрос)
8 июл 19, 13:34    [21922652]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
SQL2008,
+1
Автор проблемами не делится. Хочет спринг изучать - удачи ему.
8 июл 19, 13:36    [21922653]     Ответить | Цитировать Сообщить модератору
 Re: Авторизация в REST  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 618
andreykaT,
Если в обычном hello world отдавать по аннотации или просто в сервлете json, то мы получаем REST API с некоторыми оговорками.
Поэтому я лично вообще не вижу что там у автора "не работает".
8 июл 19, 13:44    [21922660]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить