@Vimana

Как работает jwt decode?

Всем привет! использую javascript либу jsonwebtoken, сайню токен с помощью секрет ворда вот так jwt.sign(data, secret);
все окей, но если я закину токен в decode фунцию jwt.decode(token); то оно на легке его расшифровывает, как это происходит? если я не передавал secret? не совсем понятна концепция таких токенов, если так легко прочитать их содержимое не зная секрета, подскажите плз как это работает
  • Вопрос задан
  • 5451 просмотр
Решения вопроса 1
REZ1DENT3
@REZ1DENT3
web-developer
Token хранится в открытом виде, это обычный base64.
Secret используется для получения подписи данных, чтобы их никто не мог подменить.

Token выглядит так {header}.{payload}.{hash}, которые отделены через точку.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c


header
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 // {"alg":"HS256","typ":"JWT"}


payload
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ // {"sub":"1234567890","name":"John Doe","iat":1516239022}


hash
let content = base64UrlEncode(header) + "." + base64UrlEncode(payload);
let hash = HMACSHA256(content, secret);


А так же посетите ресурс https://jwt.io/

ЗЫ, если вам нужно шифровать данные, используйте JWS вместо JWT
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы