PassportJS openid-client How to use without a session, save token/user in normal cookie

时间:2018-11-14 14:05:34

标签: node.js express passport.js

We are currently using the https://github.com/panva/node-openid-client策略以及cookie会话。

但是,我们想尝试离开会话,而只存储带有令牌的简单cookie,或者将令牌附加到每个请求的标头上,然后我们进行自省以查看令牌是否有效。

我无法弄清楚,也许不可能,我只是不知道我在哪里或如何从openid-client库中检索令牌,以及何时以及如何将其保存在cookie中。也许仅是为了使用会话而构建的。

当前,我们有:

  passport.use(
    `oidc.${site}`,
    new Strategy(
      {
        client,
        params: getParamsForSite(site),
        passReqToCallback,
        usePKCE,
      },
      (tokenset, done) => {
        const user = {
          token: tokenset,
          name: tokenset.claims.sub,
        };

        return done(null, user);
      }
    )
  );

登录

app.get(['/login', '/login/:site'], (req, res, next) => {
  if (req.params.site) {
    passport.authenticate(`oidc.${req.params.site}`)(req, res, next);
  } else {
    res.end(loginFrontend.success());
  }
});

以及回调

app.get('/auth_callback', (req, res, next) => {
  passport.authenticate(`oidc.${req.query.state}`, {
    callback: true,
    successReturnToOrRedirect: process.env.BASE_URI,
  })(req, res, next);
});

我们希望继续使用该库,因为我们调用的身份验证服务具有发现端点等,并且您不想自己实现所有功能。如果我将session设置为false,那么如何获取令牌以及该策略在哪里可以帮助我?

0 个答案:

没有答案