@vbNoName

Как организовать аутентификацию через jwt в Spring?

Как грамотно и удобно организовать аутентификацию в Spring REST Api через JWT? Сессию не хочу использовать, потому что это REST и JWT. Проверка токена должна проходить при каждом запросе, который требует аутентификации. Токен хранится или в куки или передается в хедерах(это не столь важно).

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

До этого писать Api на SparkJava, там все было очень просто. Вместо стандартного Route, там где надо было, возвращал самописный SecuredRoute, который в свою очередь имплементился от стандартного Route, и переопределял его стандартный метод handle, в котором была написана логика проверки авторизации, и если юзер авторизован, то дальше передавался handleSecured, в параметрах которого уже был сам юзер.

Код для наглядности, который был на spark

public interface SecuredRoute extends Route {
    
        @Override
        default Object handle(Request request, Response response) {
            // Логика проверки...
            if (юзер не прошел провеку) {
                response.removeCookie("/", "accessToken");
                return new ErrorResponse(response).errorResponseUnauthenticated();
            }
            return handleSecured(request, response, user);
        }
    
        Object handleSecured(Request request, Response response, User user);
    }


Можно ли что-либо подобное сделать на Spring?
Мне кажется что в идеале было бы создать какую то свою аннотацию, которая ставилась бы перед методом, в котором нужна авторизация, и как то инжектила этого юзера в метод
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
@vbNoName Автор вопроса
Решение придумал сам. Описал вот здесь https://ru.stackoverflow.com/q/898668/261539
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alfss
@alfss
https://career.habr.com/alfss
Либо spring security (на подобии https://github.com/szerhusenBC/jwt-spring-security-demo ) и да тут фильтры.
Либо попробывать реализовать декоратор за счёт аннотаций.
Ответ написан
Комментировать
1. Посмотреть примеры https://github.com/search?q=spring+jwt
2. Купить книгу по Spring Security https://www.amazon.com/s?k=spring+secuity&ref=nb_s...

Документацию не советую. Долго и не всегда понятно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы