паспорт oauth2 для обмена токеном доступа - PullRequest
0 голосов
/ 06 марта 2020

Можно ли использовать passport-oauth2 только для обмена accessToken на код авторизации. Поскольку внешний интерфейс выполняет работу по перенаправлению пользователя на страницу входа oauth и перенаправлению uri, он напрямую попадает на конечную точку сервера express и вызывает следующий код:

passport.js:

        passport.use(new OAuth2Strategy({
        authorizationURL: 'https://www.example.com/oauth2/authorize',
        tokenURL: 'https://www.example.com/oauth2/token',
        clientID: EXAMPLE_CLIENT_ID,
        clientSecret: EXAMPLE_CLIENT_SECRET,
        callbackURL: "http://localhost:3000/auth/example/callback"
      },
      function(accessToken, refreshToken, profile, cb) {
        User.findOrCreate({ exampleId: profile.id }, function (err, user) {
          return cb(err, user);
        });
      }
    ));

Приведенный выше код обратного вызова получает данные пользователя. Так что я использую только обратный вызов из кода ниже.

 app.js:


     function adminIsLoggedIn(req, res, next) {

     // if user is authenticated in the session, carry on
      if (req.isAuthenticated())
         return next();

     // if they aren't redirect them to the home page
      res.redirect('/');
   }

  // required for passport session
  app.use(session({
    secret: 'secrettexthere',
    saveUninitialized: true,
    resave: true
  }));

  // Init passport authentication
  app.use(passport.initialize());
  // persistent login sessions
  app.use(passport.session());


   initializePassportoAuth2Config(app);

   app.use('/admin', adminIsLoggedIn, admin);

  //app.get('/auth/example',
    //passport.authenticate('oauth2'));

  app.get('/auth/example/callback',
    passport.authenticate('oauth2', { failureRedirect: '/login' }),
    function (req, res) {
      // Successful authentication, redirect home.
      res.redirect('/');
    });

Но я получаю некоторые противоречивые результаты, когда при вызове req.isAuthenticated () из другого контроллера возвращается false. Когда я вхожу в код метода req.isAuthenticated (), я вижу, что в нем нет пользовательского объекта.

Во всем этом процессе я вижу, что passport.deserliazeUser () никогда не вызывается.

обновление: почтальон звонит на работу, но не звонит браузер

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