Расшифровать JWT токен в узле - без библиотеки - PullRequest
0 голосов
/ 17 октября 2018

У меня есть следующий код для декодирования токена JWT в Javascript (ref: Как декодировать токен JWT в JavaScript )

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';

function parseJwt(token) {
  var base64Url = token.split('.')[1];
  var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
  console.log(JSON.parse((atob(base64))))
};

parseJwt(token);

Я получаю полезную нагрузку, необходимую мне из приведенного выше кода, но я реализую ее в узле, где у нас нет функции "atob" для декодирования строки, закодированной в base64

Кажется, нам нужно использовать Buffer в узле.Провел мое исследование и нашел ниже решение, которое не сработало.

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
function parseJwt(token) {
  const base64Url = token.split('.')[1];
  const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
  const buff = new Buffer(base64, 'base64');
  const payloadinit = buff.toString('ascii');
  const payload = JSON.parse(payloadinit);
  console.log(payload)
};
parseJwt(token);

Пожалуйста, дайте мне знать, если есть какой-нибудь лучший подход - Нет библиотек (Jwt или decode-Jwt)

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

На самом деле я пробовал это в независимой среде, и вышеупомянутый код работает как прелесть для получения полезной нагрузки токена Jwt

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'

const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const buff = new Buffer(base64, 'base64');
const payloadinit = buff.toString('ascii');
const payload = JSON.parse(payloadinit);
console.log(payload);

https://repl.it/@Punith/RuralSeveralAdaware

0 голосов
/ 17 октября 2018

Вы можете проверить этот для получения функциональности atob.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...