Продолжаем мысль предыдущего поста.
❇️ Альтернатива: "Коробка с секретом"
А что, если серверу не нужно хранить сессию? Что, если клиент сам будет приносить все данные о себе, а сервер будет только проверять: "Точно ли эти данные создал я, и не подделаны ли они?"
Это концепция Stateless Authentication.
Сервер после логина упаковывает данные (userId, роль, expiration time) в JSON, подписывает их секретным ключом, чтобы никто не мог подделать, и отдает клиенту.
Этот пакет и есть токен.
Сервер получает запрос с токеном -> проверяет подпись -> если подпись верна, значит, данные внутри токена истинны и созданы нами. Всё. Никакого похода в БД за сессией (в идеальном мире).
Это и есть JWT (JSON Web Token) в своей сути. Но о его внутренностях поговорим дальше.
Главное:
💠 Сессии - это когда состояние хранит сервер. Клиент - просто держатель ключа от ячейки.
💠 Токены (JWT) - это когда состояние хранит клиент. Сервер — просто проверяет, не вскрывал ли клиент коробку.
Если клиент хранит состояние (токен), как нам срочно заблокировать Васю, если его токен действителен еще 30 минут?
Проблема отзыва токенов — это главная боль JWT. Разберем её в деталях дальше.
Post #177
98
- 🔥 1
- 💯 1