У меня есть два экспресс-приложения, которые я хочу пересылать / передавать заголовки аутентификации от первого ко второму.Это просто тест для чего-то другого, но тем не менее.
Я прочитал документацию по запросу и нашел, где в качестве опции можно включить заголовок auth с запросом, но, похоже, я не могу получить доступ к заголовку прямо при использовании паспорта jwt.
Для моих вариантов запроса это то, что у меня есть
options = {
baseUrl : serviceURL,
form: {'':''},
headers: {Authorization: ''}
};
Это пример маршрута, который я создал для тестирования.Я удалил все, кроме основ.
router.get('/auth/test', (req, res) => {
options.headers.Authorization = req.headers.authorization;
request.get(req.path, options, (error, response, body) => {
res.send(body);
});
});
Вот вывод req.headers во втором приложении, которое вызывает запрос.
{
authorization: 'Bearer <token>',
host: '10.0.1.236:8081',
'content-type': 'application/x-www-form-urlencoded',
'content-length': '1',
connection: 'close'
}
Тогда эта часть имеет лишь некоторые связино это моя стратегия passport-jwt:
var opts = {};
// opts.jwtFromRequest = ExtractJWT.fromAuthHeaderAsBearerToken(); //Tried this one but it didn't work
opts.jwtFromRequest = ExtractJWT.fromAuthHeaderWithScheme('Bearer');
opts.secretOrKey = config.passport.jwtSecret;
opts.issuer = config.passport.issuer;
opts.audience = config.passport.audience;
passport.use('jwt', new JwtStrategy(opts, function(jwt_payload, done) {
console.log('payload received: ', jwt_payload);
User.findOneById({id: jwt_payload.sub}, function(err, user) {
console.log('User: ', user);
console.log('Error: ', err);
if (user) {
console.log(user);
return done(null, user);
}
if (err) {
return done(err, false);
}
});
}));
Кажется, что мой токен передается, но я не совсем уверен, почему он не вызывает мою стратегию, я думаю, что это из-за токенадаже не найден.