Паспортный звонок не вызывается - PullRequest
0 голосов
/ 11 октября 2019

При попытке реализовать те же методы аутентификации, что и для паспорта, я столкнулся с препятствиями. Функция обратного вызова, переданная функции 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

1 Ответ

0 голосов
/ 16 октября 2019

Проблема оказалась вовсе не в этом куске кода, а в инициации провайдера saml.

У меня есть функция обратного вызова в Strategy({cert: function(callback)....});, которая пытается получить сертификаты подписи дляответ Самл. Однако IDP не был доступен из моего SP, поскольку он был тестовым сервером, поэтому обратный вызов не вызывался.

TL; DR;Если вы используете cert в своем определении Strategy;и указанный ключ использует обратный вызов, проверьте, вызван ли этот обратный вызов!

...