Паспорт Node.js для аутентификации OAuth 2.0: где хранить доступ и обновлять токены - PullRequest
0 голосов
/ 24 января 2019

При использовании passport в node.js приложении в качестве промежуточного ПО для аутентификации для потоков Oauth 2.0 (таких как Facebook, Twitter и т. Д.) Я хотел бы знать, что общие / лучшие практики для хранения токенов доступа и обновления токенов в приложении. Мне не нужно хранить учетную запись пользователя в приложении, мне просто нужен токен доступа для вызова API.

Например, если я хочу аутентифицировать пользователя у провайдера аутентификации OAuth 2.0, чтобы получить маркер доступа для использования для API на основе oauth, я могу использовать следующую стратегию паспорта :

passport.use(new OAuth2Strategy({
    authorizationURL: 'https://www.example.com/oauth2/authorize',
    tokenURL: 'https://www.example.com/oauth2/token',
    clientID: EXAMPLE_CLIENT_ID,
    clientSecret: EXAMPLE_CLIENT_SECRET,
    callbackURL: "http://localhost:3000/auth/example/callback"
  },
  function(accessToken, refreshToken, profile, cb) {
    // handle user profile and tokens
    // [...]
  }
));

Как и где безопасно хранить токены? Можно ли прикрепить токены к профилю пользователя? Вот так:

function(accessToken, refreshToken, profile, cb) {
    profile.accessToken = accessToken;
    profile.refreshToken = refreshToken;
    process.nextTick(() => return cb(null, profile))
}
...