在Express-Gateway中运行自定义功能

时间:2019-09-26 13:00:23

标签: express express-gateway

我在gateway.config.yml(Express-Gateway api)中具有此配置:

 - bo
    policies:
      - jwt:
        - action:
            secretOrPublicKeyFile: './key.pem'
            checkCredentialExistence: false

一切正常,但我希望客户端对发送的令牌进行编码/加密,以确保即使我将令牌存储在本地存储上也没有人可以使用它,因为它需要由客户。

唯一的问题是,如何在Express-Gateway jwt策略尝试验证令牌之前运行代码解码/解密令牌?

因为Express-gateway可以像其他任何Express应用程序一样使用中间件,所以我认为这是可行的,但对如何做到这一点尚无定论。

我创建了这项政策,对我有帮助,但是如何将其与express-gateway api集成在一起:

const cryptojs = require("crypto-js");
module.exports = {
    name: 'decode',
    policy: (actionParams) => {
      return (req, res, next) => {
        const tokenHeader = req.header('Authorization');
        const tokenArray = tokenHeader.split(' ');
        const tokenCifer = tokenArray[1];
        const bytes  = cryptojs.AES.decrypt(tokenCifer, 'superkeyperm'); //CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
        var token = bytes.toString(cryptojs.enc.Utf8);
        req.headers.authorization = `Bearer ${token}`;
        next() // calling next policy
      };
    }
};

1 个答案:

答案 0 :(得分:0)

我认为您感兴趣的是编写一个插件,该插件不过是可以在Express Gateway中堆叠的其他中间件和条件的集合,您可以在其中放置自己的逻辑。

https://www.express-gateway.io/docs/plugins/上查看文档