Аутентификация узла с JWT - поток клиента - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть Node-сервер (с Koa), где я внедрил систему аутентификации с нуля с помощью JWT. Я читал много блогов и руководств, и я придумал этот поток, но я не уверен в клиентской стороне:

  1. [Клиент] POST /signin email = ... pass = ...
  2. [Server] Проверьте pass ha sh (argon2), сгенерируйте токен JWT и отправьте его клиенту в качестве тела ответа и установите -Cook ie: token = jwtToken; обеспечения; httpOnly
  3. [Клиент] localStorage.currentUser = jwtTokenPayload
  4. [Клиент] GET /resource => Хорошо, это работает!

Обычно я сохраняю токен JWT в браузере как httpOnly secure cook ie, я не хочу хранить его в local / sessionStorage, затем я сохраняю полезную нагрузку токена JWT в localStorage, полезную нагрузку такую:

{
  sub: 'someId',
  email: 'me@gmail.com',
  iat: 1234,
  exp: 2345
}

Когда приложение загружается снова, я читаю localStorage и использую время истечения, чтобы проверить, вошел ли пользователь, поэтому я, конечно, могу перенаправить на /login или / в любом случае, я звоню /user/me, чтобы получить профиль пользователя и проверить, действительно ли он вошел в систему.

Более того, срок действия токена истекает через 7 дней, поэтому я ' Я собираюсь позвонить /signin при загрузке приложения, без электронной почты + pass, но с токеном JWT и ответить токеном fre sh с другой верностью 7d, это будет механизм refre sh.

Эта вещь работает, но я что-то упустил? Есть ли что-то небезопасное? Можно ли хранить токен JWT в качестве повара ie?

...