使用护照检索和存储access_token

时间:2018-08-26 02:27:26

标签: express passport.js openid

我正在使用Express服务器中的PassportJSopenid-clientcookie-session进行身份验证。我以openid-client的{​​{3}}作为起点,目前可以成功进行身份验证。由于我需要通过服务器代理的API的访问令牌,因此我选择使用以下代码将访问令牌保存在用户会话中:

passport.use(
  'oidc',
  new Strategy(
    { client, params, passReqToCallback, sessionKey, usePKCE },
    (req, tokenset, userinfo, done) => {
      logger.info('Retrieved tokenset & userinfo');
      // Attach tokens to the stored userinfo.
      userinfo.tokenset = tokenset;
      return done(null, userinfo);
    }
  )
);

我的下一步是获取并存储新的访问令牌。 tokenset附带的部分信息是expires_at键,它设置为在一小时内到期。因此,当然,如果它即将到期或已过期,我想获得一个新令牌。

文档说要使用:

client.refresh(refreshToken) // => Promise
  .then(function (tokenSet) {
    console.log('refreshed and validated tokens %j', tokenSet);
    console.log('refreshed id_token claims %j', tokenSet.claims);
});

好的,我理解这一点,并且我也有一些代码可以正常工作。但是我不知道如何将其保存回我的用户会话中。如果我执行通过服务器代理的后续API调用,则req.session.passport.user.tokenset.access_token中仍将保留旧令牌。那我该如何更新呢?

(请注意,我对OpenID / Oauth身份验证以及Passport本身还是很陌生,所以我所做的某些事情可能是完全显而易见的。)

0 个答案:

没有答案