如何从外部应用程序安全地使用json web令牌,与wordpress rest api对话

问题描述 投票:0回答:1

我有一个与JWT有关的问题。这是场景。

  • A - >启用了wp rest api的wordpress站点;
  • B - >外部应用程序(比方说简单的javascript / jQuery应用程序)

因此,如果我想在wordpress网站(A)上发布帖子请求/创建新帖子,我可以通过提供用户名+密码然后获取JWT令牌进行身份验证来实现。如果我设置了快速登录功能,它基本上可以正常工作而不会有暴露用户名和密码的风险。然而,问题是如下:如果我需要应用程序让我们说从A获取所有帖子(wordpress网站通过rest api),但我不想要登录功能,基本上我需要一种方法来提供用户登录获取jwt令牌的凭据,但这对我没有意义,因为有人可以只检查js代码并提取该信息?

javascript json ajax wordpress jwt
1个回答
0
投票

生成jwt的代码是这样的。如您所见,电子邮件和名称是javascript文件中的一次性变量。用户名和电子邮件本身未嵌入代码中。

userSchema.methods.generateJwt = function() {
  var expiry = new Date();
  expiry.setDate(expiry.getDate() + 7);

  return jwt.sign(
    {
      _id: this._id,
      email: this.email,
      name: this.name,
      exp: parseInt(expiry.getTime() / 1000)
    },
    jwt_secret
  );
};

你唯一可能意外暴露的是jwt_secret。为此,您应该将秘密存储在dotenv文件中,而不是将其提交给版本控制。

require("dotenv").config();
const jwt_secret = process.env.JWT_SECRET;
© www.soinside.com 2019 - 2024. All rights reserved.