Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Не устанавливается expiration time для jwt access токена  [new]
bobo96
Member

Откуда:
Сообщений: 88
Приветствую!
Непонятки с expiration time jwt токена.
Выставил время жизни 15 минут
При авторизации пользователя создаем токен:
    public String generateToken(Authentication authentication) {

        UserPrincipal userPrincipal = (UserPrincipal) authentication.getPrincipal();

        Date now = new Date();
        Date expiryDate = new Date(now.getTime() + jwtExpirationInMs);
        System.out.println("Curent time: " + new Date(new Date().getTime()));
        System.out.println("expiryDate: " + expiryDate);

        return token = Jwts.builder()
                .setSubject(Long.toString(userPrincipal.getId()))
                .setIssuedAt(new Date())
                .setExpiration(expiryDate)
                .signWith(SignatureAlgorithm.HS512, jwtSecret)
                .claim("TEST", "lololo")
                .compact();
    }


Вроде все ок:
Curent time: Tue Apr 09 10:34:34 UTC 2019
expiryDate: Tue Apr 09 10:49:34 UTC 2019


Беру этот токен, который прилетел в ответ на успешную авторизацию, иду с ним в закрытый раздел попутно вытаскивая id пользователя:
    Long getUserIdFromJWT(String token) {
        Claims claims = Jwts.parser()
                .setSigningKey(jwtSecret)
                .parseClaimsJws(token)
                .getBody();

        System.out.println("Curent time: " + new Date(new Date().getTime()));
        System.out.println("Expiration time: " + claims.getExpiration());
        System.out.println("IssuedAt exp: " + claims.getIssuedAt());

        return Long.parseLong(claims.getSubject());
    }


И вот тут начинается какая-то дичь:
Curent time: Tue Apr 09 10:35:01 UTC 2019
Expiration time: Mon Apr 15 09:46:31 UTC 2019
IssuedAt exp: Mon Apr 08 09:46:31 UTC 2019

Почему claims.getExpiration() на 6 дней перескочил ??
9 апр 19, 17:34    [21857511]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается expiration time для jwt access токена  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1069
bobo96, есть сайт https://jwt.io/. Вставьте полученный токен и посмотрите что в нем.
9 апр 19, 23:18    [21857786]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается expiration time для jwt access токена  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1069
bobo96
System.out.println("Curent time: " + new Date(new Date().getTime()));


а
new Date()
не работает?
9 апр 19, 23:19    [21857787]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается expiration time для jwt access токена  [new]
bobo96
Member

Откуда:
Сообщений: 88
Tsyklop
bobo96, есть сайт https://jwt.io/. Вставьте полученный токен и посмотрите что в нем.

Ок, попробую.
Tsyklop
bobo96
System.out.println("Curent time: " + new Date(new Date().getTime()));


а
new Date()
не работает?

Да работает наверное, просто это все копипаста с той ссылки, что вы дали)
10 апр 19, 06:59    [21857894]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить