PassportJS openid-client Как использовать без сеанса, сохранить токен / пользователя в обычном cookie - PullRequest
0 голосов
/ 14 ноября 2018

В настоящее время мы используем стратегию https://github.com/panva/node-openid-client для passportJS вместе с 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);
});

Мы хотели бы продолжить использовать эту библиотеку, так как вызываемая нами служба аутентификации имеет конечную точку обнаружения и т. Д. И не хотела бы реализовывать все функции самостоятельно.Если я установлю для сеанса значение false, как мне получить токен и где для этой стратегии кто-нибудь может мне помочь?

...