如何在 POSTMAN 中解码 jwt 令牌?

Kai*_*950 7 jwt postman

我想解码使用 Postman 收到的 jwt 令牌并在 REST API 中实现它。我怎样才能做到这一点?我看到人们发布了解码 jwt 令牌的代码(参考:如何在不使用库的情况下在 javascript 中解码 jwt 令牌?),但我不明白如何在邮递员中执行此操作?解码 jwt 需要什么 url?需要什么标头、授权?

小智 6

atob您可以使用解码 Base64 字符串的函数手动解析。(https://developer.mozilla.org/pt-BR/docs/Web/API/atob

它可以在 Postman 脚本中使用。

像这样的东西:

// Sample JWT
let jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'

let [jwtHeader, jwtPayload, jwtSignature] = jwt.split('.')

let jwtPayloadJsonString = atob(jwtPayload)

console.log(jwtPayloadJsonString)

let jwtPayloadJson = JSON.parse(jwtPayloadJsonString)

console.log(jwtPayloadJson)

Run Code Online (Sandbox Code Playgroud)


PDH*_*ide 4

Postman 支持 cryptojs 库:https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-external-libraries

将以下示例添加到邮递员测试脚本中:

let jwt = `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0b3B0YWwuY29tIiwiZXhwIjoxNDI2NDIwODAwLCJodHRwOi8vdG9wdGFsLmNvbS9qd3RfY2xhaW1zL2lzX2FkbWluIjp0cnVlLCJjb21wYW55IjoiVG9wdGFsIiwiYXdlc29tZSI6dHJ1ZX0.UsrGn95rk5DStcC_WwIr3WIv5rHe2IApX56I58l8uyo`

a = jwt.split('.');


//a.forEach(function (val) {
    var words = CryptoJS.enc.Base64.parse(a[1]);
    var textString = CryptoJS.enc.Utf8.stringify(words);

    console.log(textString)
//})
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

hmacSHA256 不是一种加密算法,而是一种哈希算法,因此无法对其进行解码,因为哈希是单向函数。

因为最后一部分的形式是

HMACSHA256 of ( base64(header) + "." + base64(body) )
Run Code Online (Sandbox Code Playgroud)

你可以尝试创建它并使两者相等