Стратегия паспорта openid-connect не аутентифицируется, когда я перенаправляю со страницы в Маршруты входа - PullRequest
1 голос
/ 27 февраля 2020

Теперь эти маршруты ниже работают правильно, когда я нажимаю на них напрямую, но когда я перенаправляю их пользователя со страницы на эти маршруты, аутентификация никогда не проходит успешно, вместо этого я перенаправляюсь обратно на маршрут '/ auth / openidconnect / undefined'. Более того, кое-что, что я нашел действительно странным, было то, что после попытки по крайней мере еще 2 раза (перенаправление пользователя на маршрут авторизации с вышеупомянутой страницы) я успешно прошел аутентификацию.

    router.get('/auth/openidconnect',oidcSettings, oidcProviderReq);
    router.get('/auth/openidconnect/callback',oidcSettings, oidcCallback);

let oidcSettings = function (req, res, next) {

      //provider contains all the required data

        var OidcStrategy = require('passport-openidconnect').Strategy;
        passport.use('oidc', new OidcStrategy({
            issuer: provider.settings.issuer,
            authorizationURL: provider.settings.authorizationURL,
            tokenURL: provider.settings.tokenURL,
            userInfoURL: provider.settings.userInfoURL,
            clientID: provider.settings.ClientID,
            clientSecret: provider.settings.clientSecret,
            callbackURL: provider.settings.callbackURL, 
            scope: 'openid profile'
        }, (issuer, sub, profile, accessToken, refreshToken, done) => {
            if (!(profile && profile._json && profile._json.email)) {
                return done(null, false);
            }
            req.params.provider =profile.id
            oidcLogin(req, profile, 'oidc_user', done); //basically either logs into the application or creates a new user 
        }));
        next();
}

let oidcProviderReq = function(req, res, next){
    passport.authenticate('oidc', {scope: 'openid profile'})(req, res, next);
}

let oidcCallback = function(req, res, next){
    passport.authenticate('oidc', function (err, user, info) {
        if(err) throw err;
       console.log(user)
    })(req, res, next);
}




```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...