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

Posted

技术标签:

【中文标题】Nodejs中的护照OAuth2Strategy是不是对访问令牌发出自动POST请求【英文标题】:Does passport OAuth2Strategy in Nodejs make automatic POST request for access tokenNodejs中的护照OAuth2Strategy是否对访问令牌发出自动POST请求 【发布时间】:2017-12-26 05:01:59 【问题描述】:

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

内容类型:application/x-www-form-urlencoded; charset=UTF-8

code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&grant_type=authorization_code

2) 如果可以,我该如何让它在我的服务器上工作?

【问题讨论】:

【参考方案1】:

您需要了解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 中指定的那样

【讨论】:

以上是关于Nodejs中的护照OAuth2Strategy是不是对访问令牌发出自动POST请求的主要内容,如果未能解决你的问题,请参考以下文章

无法使用护照登录 - Nodejs

NodeJs JWT 护照

nodejs护照身份验证令牌

Angularjs + nodejs + 护照跨域请求

Angular2、NodeJS 和护照问题

护照身份验证不适用于 nodejs 和 mysql