使用Node.js在azure函数中检查身份验证JWT令牌

jtw3ybtb  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(140)

我想使用node.js中的token jwt在azure函数中执行CRUD API。
1.我有一个使用登录名和密码登录的用户,成功登录后,我生成一个令牌并存储在本地存储中。
1.如果给定用户发送请求,例如GET /basic-data我必须使用'jsonwebtoken'包通过使用Azure函数中的中间件来验证令牌,该中间件将检查头部中的令牌是否与存储中的令牌相同。
问题是,我不能调用中间件,这是验证jwt令牌在azure功能。
例如:如果是用express写的,我们可以把under称为:

const verifytoken = require("./middleware/auth");
app.get("/welcome/bubble", verifytoken, async (req, res) => {
  res.status(200).json({
    status: res.statusCode,
    userInfo: res.req.user,
  });

});
但是在azure函数中:

const response = require("../traits/api_response");
const Database = require("../model/database");
const config = require("../config/config");
const verifyJWT = require("../middleware/auth");

module.exports = async function (context, req, verifyJWT) {
  context.log("JavaScript HTTP trigger function processed a request.");
  const { userId } = context.bindingData;
  console.log("Getting from the localhostlink: ", userId);
  if (!userId) {
    req.status(404).json(response.error([], `User ID must put!`));
    return;
  }

  try {
    const database = new Database(config);
    const user = await database.findID(userId);

    context.res = {
      status: 200,
      headers: {
        "Content-Type": "application/json",
      },
      body: response.success(
        user,
        `Successfully going into the MS Sql server to get login information.`
      ),
    };
    database.disconnect();
  } catch (err) {
    context.res = {
      status: 500,
      headers: {
        "Content-Type": "application/json",
      },
      body: `${err.message}`,
    };
  }
};

请问你能帮助我如何调用中间件在azure函数的JWT令牌?谢谢你。

e4eetjau

e4eetjau1#

下面是使用Node.js在azure函数中检查验证JWT令牌的代码:

const  jwToken = require("jsonwebtoken");
module.exports = async  function (context, req) {
try {
// Decode the json web token in the Authorization Header.

const  decodedToken = jwt.decode(req.headers.authorization.split(" ")[1]);

context.res =
decodedToken.scp.split(" ").indexOf("You provided") > -1
? {
body:  "Hello, world. You provided a valid access token.",
}

: { body:  "Missed required scope.", status:  403 };
} catch (error) {
context.res = { body:  "Improper Token......", status:  403 };
}
};

**输出:**x1c 0d1x

注:

  • Function应用程序身份验证不允许使用与on-Azure运行时相同的本地开发环境。
  • 如果使用func start命令在本地执行此操作,则不会使用Azure Function应用服务的身份验证功能,并且使用此MSDOC将忽略任何用于授权的JWT令牌验证(签名、iss、exp、AUD)。
  • 有关其他方法,请访问GitHub

相关问题