Как реализовать токен обновления в Spring Boot

Я следовал этому руководству https://auth0.com/blog/implementing-jwt-authentication-on-spring-boot/, чтобы реализовать токены доступа в моем веб-приложении, и оно работает нормально. Однако в этом руководстве ничего не говорится о токене обновления.

Может ли кто-нибудь помочь мне в том, как реализовать это в Java Spring Boot? Или есть другой способ сохранить пользователя в системе?

По задумке ваш пользователь не «вошел в систему», поскольку JWT не имеет состояния. Я рекомендую полностью понять механизмы и цель JWT, прежде чем пытаться реализовать его с помощью java, spring, nodejs или чего-то еще.

Akli REGUIG 17.04.2018 14:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
15 716
2

Ответы 2

Spring предоставляет функциональные возможности для получения нового токена доступа, если вы настроили его правильно, т.е. если authorizedGrantTypes содержит "refresh_code".

Вы должны использовать токен обновления, чтобы получить новый токен доступа, используя конечную точку токена следующим образом:

curl -H "Authorization: Bearer [base64encode(clientId:clientSecret)]" "https://yourdomain.com/oauth/token?grant_type=refresh_token&refresh_token=[yourRefreshToken]"

пример:

curl -X POST -H 'Authorization: Basic dGVzdGNsaWVudDpzZWNyZXQ=' -d 'refresh_token=fdb8fdbecf1d03ce5e6125c067733c0d51de209c&grant_type=refresh_token' localhost:3000/oauth/token

{
    "token_type":"bearer",
"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiVlx1MDAxNcKbwoNUwoonbFPCu8KhwrYiLCJpYXQiOjE0NDQyNjI4NjYsImV4cCI6MTQ0NDI2Mjg4Nn0.Dww7TC-d0teDAgsmKHw7bhF2THNichsE6rVJq9xu_2s",
"expires_in":20,
"refresh_token":"7fd15938c823cf58e78019bea2af142f9449696a"
}

как описано здесь: https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/

Ref - реализация Spring Boot + Refresh с истекшим сроком действия JWT

Когда срок действия JWT истечет, пользователь / система вызовет другой URL-адрес, допустим, / refreshtoken. Также вместе с этим запросом должен быть передан истекший JWT. Затем сервер вернет новый JWT, который может использоваться пользователем / системой.

Другие вопросы по теме