Как получить ключ ребенка (идентификатор ключа) токена с помощью библиотеки jwks-rsa - PullRequest
0 голосов
/ 09 июля 2019

У меня есть некоторый ключевой идентификатор, который я буду использовать для проверки токена, но он жестко закодирован, и я не хочу, чтобы это было так.Я использую библиотеку 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 })
        }
    })
}

РЕДАКТИРОВАТЬ: Это не суперчистый код, но здесь дело не в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...