У меня проблема с проверкой JWT на стороне сервера моего узла / экспресс-приложения.Токен создается в Identity Server в основном приложении asp.net.Сгенерированный токен имеет тип токена RS256, что означает, что при создании на Identity Server необходимо сгенерировать закрытый ключ и открытый ключ.Мне нужно получить действительный сертификат с действительной подписью.
На стороне клиента (Angular) я передаю токен Bearer на все запросы после входа в систему. Мне нужно как-то аутентифицировать этот токен.Способ сделать это с помощью типа токена RS256 - убедиться, что открытый ключ совпадает.Я использую
const jwt2 = require ('jwt-simple');
Для проверки JWT.
Проблема в секрете, вот документация jwt-simple ссылка jwt-simple .Если я сделаю третье значение в декодере ложным, он будет работать, потому что он игнорирует требуемый секрет / сертификат.
Я делаю эту проверку в промежуточном программном обеспечении, чтобы все конечные точки поразили его.Я видел эту проблему - SO Аналогичная проблема и запускал те же команды.Я все еще получаю сообщение об ошибке, потому что токен не имеет никакого отношения к сертификатам, потому что я получаю его из проекта Identity Server.Поэтому мне нужно получить сертификат открытого ключа из этого проекта.
Как я мог бы отправить этот сертификат в токен или каким-либо образом получить этот действительный сертификат?
v1 - (используя в качестве сертификата самозаверяющий server.crt и получая эту ошибку)
Ошибка: ошибка проверки подписи
App.js
//This is for a self-signed certificate locally with no correlation to the token itself.
const options = {
key: fs.readFileSync('./key.pem', 'utf8'),
cert: fs.readFileSync('./server.crt', 'utf8')
};
app.use((req, res, next) => {
if(!req.headers.authorization){
return res.status(403).json({ error: 'No credentials sent!'});
} else {
let token = req.headers.authorization.split(' ')[1]
var decoded = jwt.decode(token, options.cert);
if(decoded){
let currentTime = new Date().getTime()/1000
if(decoded.exp <= currentTime){
return res.status(403).json({
error: 'Token has expired'
});
}
}
else if(!decoded){
return res.status(403).json({
error: 'invalid token'
});
}
}
next();
})
Структура проанализированного токена JWT.io -
Заголовок
{
"alg": "RS256",
"kid": "1231231231231231231",
"typ": "JWT",
"x5t": "si7bdXd6......HnxhO4Wi_s"
}
Что я делаю с x5t?Извиняюсь за длинный пост.Спасибо.