Pull to refresh

Comments 12

На протяжении нескольких лет в разных проектах видел подобное решение. При этом от Spring Security в основном берут только хранение состояния авторизации (SecurityContextHolder) и настройку доступов (MethodSecurity или настройка адресов в HttpSecurity).

Подобные варианты достаточно просты и отлично подходит для небольших проектов, но когда логика усложняется, вместо изучения технологии, добавляют костыли, полностью игнорируя гибкую архитектуру Spring Security.

После окончания срока действия токена предлагается снова вводить логин и пароль?

Или использовать систему с двумя токена и. Первый будет аксесс, второй рефреш. По рефрешу можно обновить аксесс.

А в текущей реализации это невозможно сделать. Надо либо реализовывать вручную, а это костыль, либо oauth, а это полный отказ от текущей реализации. Или есть ещё варианты?

Я для пет проекта делал получение токена по RSA ключам, и рефреш токен (строка с имейлом и юникс временем истечения токена) аналогично шифровал ими. По идее не зная ключей токен не расшифруешь

Читайте, пожалуйста, комментарий. Сделать вручную можно, но это костыль. Речь о том, как средствами spring security сделать.

Было бы неплохо показать как работать с refresh token

Статья хорошая, за UserDetails в базе спасибо, почерпнул кое что . Только одно замечание.

В 6 секюрити вроде токены проще сделаны

https://docs.spring.io/spring-security/reference/servlet/oauth2/index.html#oauth2-resource-server-access-token-jwt

Как я понимаю с фильтрами морочится уже не надо. И получаете принципала.

Просто они многое переименовали в AccessToken и JWT это одна из реализаций

Было бы круто увидеть реализацию с использованием Access и Refresh токенов

Интересно было бы посмотреть как сделать тоже самое в микросервисной архитектуре

Я что-то не правильно понял?

  1. В JwtAuthenticationFilter извлекаем из токена username

  2. Находим userDetails по этому username

  3. Вызываем isTokenValid с этим userDetails и токеном,

  4. в isTokenValid в частности опять извлекаем username из токена и сравниваем его с username из userDetails (которые найден по этому же username). Оно же, на сколько я понимаю, всегда совпадать будет.

Огромное спасибо за статью! За то, что подробно всё разжевали, и, самое главное, за исходный код! Изучаю сейчас Spring Boot на одной платформе онлайн-образования, и там тема JWT была упомянута лишь вскользь. И, не смотря на это, в требованиях к проектной работе указано "желательно через JWT".

Отдельно стоит отметить, что сервис завёлся буквально с полпинка, что редкость. Обычно в подобных статьях подразумевается, что недостающий код читатели напишут сами. И ещё важный момент - никакой участок кода, который вы использовали из библиотек, не помечен как "deprecated". Тоже бы приятно удивлён. Возвращаясь к образовательной онлайн-платформе, в некоторых заданиях IDE кровоточила от количества deprecated-кода из их примеров.

Sign up to leave a comment.

Articles