При попытке реализовать те же методы аутентификации, что и для паспорта, я столкнулся с препятствиями. Функция обратного вызова, переданная функции passport.authenticated
, не вызывается.
router.post("/saml/callback",
function (req, res, next) {
req.body.SAMLResponse = req.body.SAMLResponse.replace(/[\n\r]/g, "");
next();
},
function (req, res, next) {
console.log("Calling passport handler");
console.log(req.body);
try {
const response = passport.authenticate("saml",
{
failureRedirect: "/saml/error",
failureFlash: true
}, (error, user, info) => {
console.log(error, user, info);
next();
})(req, res, next);
console.log(response);
} catch(e) {
console.log(e);
}
console.log("Line after passport handler");
},
function (req, res) {
res.redirect("/saml/success");
}
);
Мое экспресс-приложение зависает при входе в этот метод, но только с 1 конкретным поставщиком saml (используя https://samltest.id в качестве поставщика тестаРАБОТАЕТ с точно таким же кодом). Кажется, что в этом методе проверки подлинности происходит ошибка, но я не могу найти эту ошибку, пока я живу.
Как получить ошибку в этом обратном вызове.
Вывод журнала:
Вызов обработчика паспорта
{SAMLResponse: 'base64encoded saml response'}
undefined
Строка после обработчика паспорта
Ошибка: подключить ETIMEDOUT ip: 443