Ответ
JWT (JSON Web Token) — это стандарт для создания токенов доступа, основанный на JSON. Состоит из трех частей:
- Header — содержит алгоритм шифрования (например,
HS256) и тип токена (JWT). - Payload — данные (claims), например,
user_id,exp(expiration time). - Signature — подпись, созданная на основе header, payload и секретного ключа.
Пример JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Типы токенов:
- Access Token — короткоживущий, для доступа к API.
- Refresh Token — долгоживущий, для обновления access token.
Безопасность:
- Хранить в
HttpOnlycookies илиlocalStorage(с риском XSS). - Проверять подпись и
exp.
Пример проверки в JS:
const decoded = jwt.verify(token, 'secret-key');