как удалить токен JWT - PullRequest
       9

как удалить токен JWT

0 голосов
/ 03 сентября 2018

Я работаю над аутентификацией на основе Spring, используя JWT, токен на предъявителя.

public String generateToken(UserProfile authentication) {

  // set the expiration time        
  Date now = new Date();
  Date expiryDate = new Date(now.getTime() + jwtExpirationInMs);

  // Generate token and return      
  return Jwts.builder()
    .setSubject(authentication.getUsername())
    .claim("roles","user")
    .setIssuedAt(new Date())
    .setExpiration(expiryDate)
    .signWith(SignatureAlgorithm.HS512,jwtSecret)
    .compact();

Приведенный выше класс генерирует токен и отвечает пользователю. У меня вопрос, как я собираюсь удалить токен, когда пользователь выпускает новый токен до истечения времени первого токена; отменить первый токен, когда пользователь запрашивает новый токен до истечения срока действия первого?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Если вы используете JWT, вы не можете отозвать токен. Его срок действия встроен.

Если вы хотите отозвать токен, не используйте JWT. Вы должны сохранить токен и проверять его действительность при каждом запросе.

Если вы действительно хотите его использовать, сохраните его в БД, как если бы он не был независимым, и добавьте флаг или отметку времени для достоверности.

Проверьте документацию JWT: https://jwt.io/

0 голосов
/ 03 сентября 2018

Я не думаю, что это возможно сделать с JWT. Вы могли бы

  • Добавить старый в какое-нибудь быстрое хранилище (например, Redis или memcached)
  • Установить некоторое время ожидания для значения (немного больше, чем дата истечения срока действия токена, который больше не нужен)
  • Проверьте, существует ли токен запроса в вашем кеше, если да, отклоните его

в основном, внесите в черный список

Я не знаю других решений

...