Нужно ли проверять токен JWT для каждого запроса? - PullRequest
1 голос
/ 25 февраля 2020

У нас есть API, и у нас есть пара клиентских приложений (app, webapp, et c.).

Мы используем Firebase Auth (https://firebase.google.com/docs/auth/admin/verify-id-tokens ); Я легко проверяю целостность токенов JWT, сгенерированных на моих клиентских SDK, однако сталкиваюсь с небольшой проблемой.

Для каждого запроса мы передаем токен аутентификации / токен jwt в заголовки HTTP, чтобы убедиться, что каждый вызов аутентифицирован. Это создает значительные издержки, поскольку проверка целостности каждого токена занимает в среднем около 200-400 мс.

Я думал о хранении ключей в памяти или о чем-то со сроком действия (exp), но я не совсем уверен, будет ли это отличным решением. Я бы просто проверил ключ с большим списком выданных ключей, который очищается при истечении срока действия ключей.

Как мне подойти к этому? Разве нет времени во времени?

Спасибо!

1 Ответ

1 голос
/ 25 февраля 2020

Действительно ли время потрачено на проверку токена? Возможно, вы захотите узнать, можете ли вы точно увидеть, куда он идет, потому что декодирование токена должно быть достаточно быстрым. Но если вы извлекаете ключ publi c для учетной записи каждый раз, это, конечно, может объяснить его часть.

Кроме этого, нет ничего плохого в кэшировании exp или любого другого декодированного информация для токена, пока этот токен не истек. На самом деле это довольно стандартный компромисс между временем и пространством. Просто помните, что вы будете использовать память для каждого токена, так что это будет увеличиваться по мере того, как вы будете получать больше одновременных пользователей.

...