Проблема в том, что промежуточное ПО прокси создано, но фактически не вызывается, и в результате запрос зависает. Один из способов решить эту проблему - создать промежуточное программное обеспечение, как вы это делали (но желательно вне обработчика маршрута, как это было бы создано при каждом запросе), а затем вызвать его с текущими express аргументами промежуточного программного обеспечения:
const serviceProviderProxy = createProxyMiddleware({target: serviceProvider });
app.get('/source*', (req, res, next) => {
req.query.RelayState = req.url;
if (req.user) { // if user is authenticated,
if (req.originalUrl) {
resource_path = req.originalUrl.split('/source')[1];
console.log(req.user['email'] + ' is viewing ' + req.originalUrl);
}
return serviceProviderProxy.call(serviceProviderProxy, req, res, next); // you need to return here if there's more code below the else block, otherwise return is not needed
} else {
if(process.env.MODE=='HACK') {
return serviceProviderProxy.call(serviceProviderProxy, req, res, next);
} else {
passport.authenticate('samlStrategy')(req, res, next);
}
}
// potential more code ...
});