Я не эксперт JWT, поэтому, если что-то из того, что я пишу, неверно, я очень рад, что меня исправили.
1) При распространении JWT сервер подпишет его с помощью закрытого ключа. Закрытый ключ является совершенно секретным и должен храниться в защищенном виде на сервере. Затем эта подпись может быть проверена с использованием открытого ключа, который подтверждает, что этот токен действительно был подписан сервером (с использованием секретного секретного ключа). Открытый ключ не обязательно является секретным и может широко распространяться среди всех, кому необходимо проверить, что токен был подписан этим сервером.
2) JWT на самом деле не нужно хранить где-либо на сервере, поскольку сервер может проверять, является ли он токеном, всякий раз, когда он его получает. Поскольку сервер также может генерировать JWT, некоторые серверы будут использовать кэш для хранения сгенерированного и действительного JWT для повышения производительности. Короче говоря, JWT не должен храниться на сервере.
3) JWT содержит много данных, в том числе время истечения срока действия (или время, когда оно было создано, и продолжительность, как долго это действует). В дополнение к проверке токена с использованием открытого ключа сервер будет сбрасывать действительные токены, срок действия которых истек.
4) Перед обработкой вашего запроса сервер, как минимум, использует открытый ключ для проверки подлинности токена и проверки срока действия. Если он пройдет эти тесты, сервер может также выполнить дополнительные проверки с данными, хранящимися в JWT, перед обработкой вашего запроса. Эти проверки могут включать проверку наличия у вашего идентификатора пользователя разрешения на доступ к данным, к которым вы пытаетесь получить доступ, проверку наличия у вас страны, в которой есть доступ к данным, и т. Д. Он может сильно меняться от случая к случаю.