Можно ли использовать кешированный верифицированный токен JWT, чтобы предотвратить повторную проверку в приложении весенней загрузки? - PullRequest
2 голосов
/ 23 января 2020

У нас есть приложение весенней загрузки с микросервисной архитектурой.
У нас есть отдельная служба аутентификации, которая предоставляет токен JWT, подписанный с помощью алгоритма RS256.
Этот токен отправляется в каждом запросе от клиента на наш основной сервер приложений. У меня есть ключ publi c для проверки подписи.
Теперь этот токен JWT отправляется в каждом запросе API со стороны клиента, так как большинство наших URL-адресов защищены.

Это хорошая идея, чтобы кэшировать уже проверенный токен JWT, чтобы предотвратить повторную проверку одного и того же токена при каждом вызове API от того же пользователя?

Ответы [ 3 ]

2 голосов
/ 23 января 2020

Могут быть веские причины для кэширования результатов проверки токена. Я сделал бы это только в случае необходимости, поскольку проверка памяти выполняется быстро.

Иногда, после проверки токена и идентификации пользователя, вы можете захотеть выполнить довольно дорогой поиск ролей и т. Д. c - и вы не хочу делать это при каждом отдельном запросе API

. Если кешируется, то сохраните токен SHA256 га sh и установите время жизни не больше, чем утверждение exp токена, как указывает Анкур.

В моем посте подробно рассматривается эта топика c.

В решениях API Gateway часто используется этот шаблон. Например, AWS API Gateway позволяет кэшировать документ политики, который быстро просматривается при следующем получении того же токена.

enter image description here

0 голосов
/ 23 января 2020

Вы можете кэшировать токен JWT, но вы должны установить тайм-аут кэша, который должен быть эквивалентен таймауту токена.

0 голосов
/ 23 января 2020

Основной целью JWT является отсутствие состояния на стороне сервера

Это означает, что сервер не будет хранить ни информацию, ни сеанс.


  • Если вы кешируете свой JWT, то ваш сервер имеет Состояние .

    • У вас могут возникнуть проблемы позже, когда вы захотите увеличить ваше приложение (иметь несколько экземпляров), и вы также можете столкнуться с некоторыми проблемами безопасности .
  • Если вы настаиваете на сервере с сохранением состояния, то лучше использовать серверы кэширования, такие как Redis, и заметить, что существующее время (время жизни) каждой строки (каждой JWT) должно равняться дата его истечения.

По стандартам, это не очень хорошая идея, чтобы кэшировать JWT на вашем сервере (не очень хорошая идея сделать сервер с состоянием)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...