Имейте в виду, что jti
заявка на использование необязательна , поэтому вы не обязаны ее использовать.Тем не менее, это очень полезно, когда вам нужно отслеживать токен, либо в белом, либо в черном списке.
Мне интересно, как часто следует генерировать JWT ID?
Я не уверен, что вы имеете в виду под регенератом .
Значение утверждения jti
должно быть назначено при создании токена.И как только токен подписан , его невозможно изменить без аннулирования подписи .Таким образом, если вы назначаете новый идентификатор токену в каждом запросе, вам придется снова подписывать токен, поэтому вы получите новый токен для каждого запроса.
Вот как jti
требование определено в RFC 7519 :
4.1.7.Заявка jti
(идентификатор JWT)
Заявка jti
(идентификатор JWT) предоставляет уникальный идентификатор для JWT.Значение идентификатора ДОЛЖНО быть назначено таким образом, чтобы обеспечить незначительную вероятность того, что одно и то же значение будет случайно назначено другому объекту данных;если приложение использует несколько эмитентов, коллизии ДОЛЖНЫ быть предотвращены среди значений, созданных разными эмитентами.Заявка jti
может использоваться для предотвращения воспроизведения JWT.Значение jti
является чувствительной к регистру строкой.Использование этого утверждения НЕОБЯЗАТЕЛЬНО.
Итог
Исходя из того, что я понимаю в вашем случае использования, имеет смысл выпустить новый токен (с уникальным идентификатором,например, UUID ), когда клиент аутентифицируется, и когда клиент обновляет токен.
Стоит отметить, что jti
утверждение само по себе делает ничего против воспроизведения токена.Однако это дает вам возможность идентифицировать токены и отслеживать их в белом или черном списке.