@Aksndr

Как организовать аутентификацию для REST (stateless) приложения (JAVA)?

Добрый день,
Прошу совета (best practise) по организации аутентификации клиента в стейтлесс веб приложении на Spring.
Суть вопроса - как избежать аутентификации для каждого запроса? Добавлять какой-то токен в заголовки и валидировать его при каждом запросе при помощи отдельного сервиса?
Заранее спасибо за помощь.
  • Вопрос задан
  • 4082 просмотра
Решения вопроса 1
FanKiLL
@FanKiLL
stateless - как и весь http подразумевает без запоминания состояния.
Собственно, нет разницы будут вам присылать login:password или токен привязанный к этому логину - всё равно придётся аутентифицировать. Лезть в базу и проверять есть ли такой токен и прочее. Просто чтоб не светить логин и пароль при каждом запросе (basic authentication) принято отсылать токены привязанные к этому логину.

Я предпочитаю в хедерах отправлять/получать токены, так url остаются чистыми, чем когда токен передают в url параметре как у facebook сделано.
Можно конечно кешировать, самое простое это HashMap с TTL в качестве ключа токен, в качестве значения - юзер. Проверять вначале HashMap на предмет, есть ли такой ключ с присланным токеном, если есть забираем юзера - если нет лезем в базу.

В spring можете сделать interceptor где можно проверять токены, если всё нормально пропускать запрос дальше.

Можно сделать аннотацию, и вешать её на контроллеры или методы которые хотим аунтефицировать и в интерцепторе вначале смотреть есть ли аннотация используя Reflection API.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
WSSE, либо просто токены, либо OAuth...
Ответ написан
Комментировать
trerums
@trerums
Почитайте о bearer-токенах
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы