У меня есть некоторый ключевой идентификатор, который я буду использовать для проверки токена, но он жестко закодирован, и я не хочу, чтобы это было так.Я использую библиотеку jwks-rsa для извлечения ключа из конечной точки API и взлома токена для проверки, однако выборка выполняется в свойстве опции объекта клиента jwks-rsa, и поэтому я не знаю, как это сделать.о сохранении извлеченного значения 'kid' в переменной.Это сложно объяснить, поэтому я покажу немного кода.
'use strict'
require('dotenv').config()
const jwt = require('jsonwebtoken')
const jwks = require('jwks-rsa')
const TOKEN_SECRET = 'someweirdtokenstring'
function (request, response, next) {
const client = jwks({
jwksUri: process.env.TOKEN_KEY_PUBLIC //this is the API endpoint; responds with a json key
})
const kid = 'something' //I don't want to hardcode this
client.getSigningKey(kid, (error, key) => {
if (error) throw error
const signingKey = key.publicKey || key.rsaPublicKey
const token = TOKEN_SECRET
if (!token) return response.status(401).send('Access denied')
try {
const verified = jwt.verify(token, signingKey, { algorithms: ['RS256'] })
request.user = verified
next()
} catch (error) {
response.status(400).send({ message: error.message, stack: error.stack })
}
})
}
РЕДАКТИРОВАТЬ: Это не суперчистый код, но здесь дело не в этом.