Запускать пользовательские функции в экспресс-шлюзе - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть эта конфигурация в gateway.config.yml (Express-Gateway api):

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

Все работает нормально, но я хочу, чтобы клиент кодировал / шифровал токен, который отправляетсячтобы убедиться, что даже если у меня есть хранилище токенов в локальном хранилище, никто не сможет его использовать, потому что он должен быть подписан клиентом.

Единственная проблема с этим заключается в том, как я могу запустить код для декодирования/ расшифровать токен до того, как политика Express-Gateway jwt попытается проверить токен?

Поскольку экспресс-шлюз может использовать промежуточное ПО, как и любое другое приложение Express, я думаю, что это возможно, но не знаю, как это сделать.

Я создал эту политику, которая поможет мне, но как я могу интегрировать ее с API-интерфейсом Express-Gateway:

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 голосов
/ 26 сентября 2019

Я думаю, что вас интересует написание плагина, который представляет собой не что иное, как набор дополнительного промежуточного программного обеспечения и условий, которые вы можете поместить в Express Gateway, где вы можете поместить свою собственную логику.

Проверьтедокументы на https://www.express -gateway.io / документы / плагины /

...