Passport js,使用PING验证accessToken

时间:2019-04-24 13:13:57

标签: node.js passport.js

我正在使用API​​网关创建AWS Lambda(这并不重要,只是一个API),需要针对PING Federate实例对传递给它的accessToken进行身份验证。

我正在使用Node.js和Passport.js,已设置了所有内容,但似乎并未调用该函数。我没有使用Express等中间件。

我正在设置这些常量

const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2');

然后在处理程序中,我有了这个(我知道这是不正确的,但是我尝试了很多事情,但还不太正确。

passport.use(new OAuth2Strategy({
  authorizationURL: 'http://localhost',
  tokenURL: 'http://localhost',
  clientID:'myID',
  clientSecret: 'mySecret',
  callbackURL: 'http://localhost'
},
  function(accessToken, refreshToken, profile, done) {
              console.log(console.log(`{"level": "INFO", "oAuth Info": "Finding one"}`));

    User.findOne({ 'ping.id' : profile.id }, function (err, user) {
        if (err) { 
          console.log(console.log(`{"level": "INFO", "oAuth Error": "${err}"}`));
          return done(err); 
        }
        if (user) {
            console.log(console.log(`{"level": "INFO", "oAuth Success": "${user}"}`));
            return done(null, user);
        } else {
                    console.log(console.log(`{"level": "INFO", "oAuth Else": "Why am I here"}`));

            var newUser = new User();
            newUser.ping.id    = profile.id;
            newUser.ping.token = accessToken;
            newUser.ping.name  = profile.displayName;
            newUser.ping.email = profile.email;
            newUser.save(function(err) {
                if (err) { throw err; }
                return done(null, newUser);
            });
        }
    });
  }
));

然后我在处理程序中这样称呼它。

 let token = event.headers.authorizationToken;

 passport.authenticate('ping-oauth2', function(token) {
    console.log(console.log(`{"level": "INFO", "authenticate callback": "am i back"}`));
    if (err) { return err.message; }
  });

我在做什么错?谢谢。

0 个答案:

没有答案