Skip to content

Latest commit

 

History

History
44 lines (34 loc) · 2.75 KB

expirejwt.russian.md

File metadata and controls

44 lines (34 loc) · 2.75 KB

Реализовывайте поддержку внесения JWT в черный список

Объяснение в один абзац

По своей сути JWT (веб-токены JSON) полностью не сохраняют состояния, поэтому после того, как эмитент подписал действительный токен, токен может быть проверен приложением как аутентичный. Проблема, к которой это приводит - это проблема безопасности, когда утечка токена все еще может быть использована и не может быть отозвана из-за того, что подпись остается в силе до тех пор, пока подпись, предоставленная проблемами, совпадает с ожидаемой приложением. В связи с этим при использовании аутентификации JWT приложение должно управлять черным списком токенов с истекшим сроком действия или отозванными токенами, чтобы сохранить безопасность пользователя в случае, если токен необходимо отозвать.

express-jwt-blacklist пример

Пример запуска express-jwt-blacklist в проекте Node.js с использованием express-jwt. Обратите внимание, что важно не использовать кэш настроек хранилища по умолчанию (in-memory) express-jwt-blacklist, а использовать внешнее хранилище, такое как Redis, для отзыва токенов во многих процессах Node.js.

const jwt = require('express-jwt');
const blacklist = require('express-jwt-blacklist');

blacklist.configure({
  tokenId: 'jti',
  strict: true,
  store: {
    type: 'memcached',
    host: '127.0.0.1',
    port: 11211,
    keyPrefix: 'mywebapp:',
    options: {
      timeout: 1000
    }
  }
});
 
app.use(jwt({
  secret: 'my-secret',
  isRevoked: blacklist.isRevoked
}));
 
app.get('/logout', (req, res)=> {
  blacklist.revoke(req.user)
  res.sendStatus(200);
});

Что говорят другие блогеры

Из блога Marc Busqué:

... добавить слой отзыва поверх JWT, даже если это подразумевает потерю своего состояния без состояния.