如何查看存储在 JWT 中的数据?使用 auth0 和 express-jwt

How do I view the data stored in a JWT? Using auth0 and express-jwt

现在我相信我已经正确设置了大部分内容。 Auth0 将 jwt 保存到客户端,然后客户端将其用于未来的请求。我使用 express-jwt 来验证令牌。通过阅读 Auth0 文档,我认为我需要客户端密码(当我使用它来解码 jwt 时,我得到一个奇怪的错误:UnauthorizedError: error:0906D06C:PEM routines:PEM_read_bio:no start line)所以我只是想知道这个秘密密钥来自哪里? 谢谢

根据 OP 的评论,要读取 JWT 主体的值,只需对其进行 base64 解码即可。您可以为此使用库,例如​​ jwt-decode for nodejs.

请参阅下面的示例用法(取自 lib 的自述文件):

var jwtDecode = require('jwt-decode');
var token = 'eyJ0eXAiO.../// jwt token';

var decoded = jwtDecode(token);
console.log(decoded);

/* prints:
 * { foo: "bar",
 *   exp: 1393286893,
 *   iat: 1393268893  }
 */

您的令牌(此处指 ID 令牌)中的声明取决于您在身份验证时提供的内容 scope。例如,如果您使用 scope: openid profile email,您将在 ID 令牌中返回所有内容。

这里,假设 JWT 是使用库验证的,现在你有了 JWT,你想阅读一些来自正文的声明。

如果您使用的是 express-jwt 中间件,则有效负载默认保存在请求对象中,您可以像这样访问它request.user

端点示例:

//jwtMiddleware is express-jwt middleware
app.get('/', jwtMiddleware, function (req, res) {
  console.log(req.user);
  res.send('hello world');
});