我正在使用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; }
});
我在做什么错?谢谢。