提问者:小点点

诺达斯中的护照 OAuth2 策略是否对访问令牌发出自动 POST 请求


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 || '/');
});

这就是我尝试从服务器获取访问令牌的方式,但是我的服务器卡在 http://192.168.0.111:8080/auth/iitbsso/callback?code=TDPHtfHuKv4HWNhJikkFzNz5bR4fvJ

我在日志中没有定义。

所以我的问题是:1)这个策略是自动发出POST请求,还是必须在回调中显式发出?

POST /sso/oauth/token/HTTP/1.1

主持人:gymkhana.iitb.ac.in

授权:基本认证_TOKEN

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

代码=AUTHORIZATION_CODE

2)如果是这样,那么我如何让它在我的服务器中工作?


共1个答案

匿名用户

您需要了解验证回调的工作原理。

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

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

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

来回答你的问题

将为您处理所有脏活累活,访问/auth/iitbsso,然后重定向用户,如/auth/iitbsso/call back中所述