2016-10-06 1 views
1

Использование библиотеки jjwt,JJWT Tokens. Как установить тайм-аут?

String compactJws = Jwts.builder().setSubject("Joe").signWith(SignatureAlgorithm.HS512, key).compact(); 

Но этот маркер является постоянным, как я установил какой-то тайм-аут на это?

ответ

1
Date expiration = getExpirationDate(); // implement me 

Jwts.builder().setSubject("Joe") 
    .setExpiration(expiration) 
    .signWith(SignatureAlgorithm.HS512, key) 
    .compact(); 

согласно спецификации JWT, дата будет преобразована в число секунд (не миллисекунд) после эпохи и хранят как JWT претензии exp. Парсер будет рассматривать это требование и гарантировать, что JWT не истек.

Обратите внимание, что проверки срока действия основаны на системном часовом времени во время разбора. Если машина, сгенерировавшая токен, имеет часы, которые дрейфуют разумно по сравнению с машиной, которая анализирует токен, ваши проверки срока действия могут потерпеть неудачу. В этом случае, вы можете использовать setAllowedClockSkewSeconds метод JJWT в (на JwtParser/Builder), чтобы позволить некоторой манёвра о различиях между часами (1 до 2 минут должны быть более чем достаточно), например:

Jwts.parser().setAllowedClockSkewSeconds(120)...etc... 

если по какой-либо причине, что не может быть достаточно хорошо, вы можете контролировать фактическое разборе часы через:

Jwts.parser().setClock(new MyClock())...etc... 

установив Clock не должно быть необходимым в большинстве случаев, однако (это, как правило, наиболее полезным в тестовых случаях).

+1

Спасибо, действительно прояснил ситуацию. Сегодня утром ты спас меня через несколько часов! – robm

Смежные вопросы