У меня есть эта конфигурация в 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
};
}
};