Nodejs中的护照OAuth2Strategy是否为访问令牌发出自动POST请求

时间:2017-07-20 13:08:41

标签: javascript node.js oauth-2.0 access-token passport.js

passport.js

passport.use(new OAuth2Strategy({
   authorizationURL: ' https://gymkhana.iitb.ac.in/sso/oauth/authorize',
   tokenURL: 'https://gymkhana.iitb.ac.in/sso/oauth/token',
   clientID: process.env.IITB_SSO_CLIENT_ID,
   clientSecret: process.env.IITB_SSO_CLIENT_SECRET,
   callbackURL: "http://192.168.0.111:8080/auth/iitbsso/callback"
},
 function(accessToken, refreshToken, profile, done) {
  console.log(accessToken);
 }

app.js

app.get('/auth/iitbsso', passport.authenticate('oauth2', { scope:'basic'}));
app.get('/auth/iitbsso/callback', passport.authenticate('oauth2', { 
   successRedirect: '/',
   failureRedirect: '/login' 
}), (req, res) => {
   res.redirect(req.session.returnTo || '/');
});

这就是我尝试从服务器获取accessToken的方法 但我的服务器卡在http://192.168.0.111:8080/auth/iitbsso/callback?code=TDPHtfHuKv4HWNhJikkFzNz5bR4fvJ

我在日志中未定义。

所以我的问题是: 1)此策略是自动发出此POST请求还是必须在回调中明确指示它?

POST / sso / oauth / token / HTTP / 1.1

主持人:gymkhana.iitb.ac.in

授权:基本AUTHENTICATION_TOKEN

Content-Type:application / x-www-form-urlencoded;字符集= UTF-8

代码= AUTHORIZATION_CODE&安培; REDIRECT_URI = REDIRECT_URI&安培; grant_type = authorization_code

2)如果确实如此,我该如何让它在我的服务器上运行?

1 个答案:

答案 0 :(得分:0)

您需要了解Verify Callback的工作原理。

查看http://www.passportjs.org/docs/configure/

更具体地说,在您的代码中

function(accessToken, refreshToken, profile, done) {
      console.log(accessToken);
      // call done(args) here!
}

回答你的问题

passport-oauth2将为您处理所有脏工作,访问/auth/iitbsso,然后重定向用户,如/auth/iitbsso/callback

中所述