Проблемы Laravel JWT токена

Рейтинг: 0Ответов: 0Опубликовано: 05.04.2023

Вызывает определенный вопрос то, почему библиотека tymondesigns/jwt-auth не выдает refresh токен.
Основная идея JWT токена ведь состоит в том, что у нас access токен, живущий условные 2-3 минуты. И есть refresh токен (бегающий в httpOnly) куки.
И имею оба, мы можем получать новый токен каждый раз, пока у нас жив refresh токен.
Но библиотека, указанная ранее, нам на:

auth()->attempt($request->only('email', 'password'))

генерирует нам только один токен. Который, по всей видимости, сам себе и access, и refresh токен.
Делая всё по доке, мы получаем, что /login endpoint у нас не закрыть jwt защитой, а logout, refresh endpoits у нас им закываются.
И тут вырисовывается ряд больших вопросов, касающийся всей тематики, и которым нет ответа в просторах интернета:

  1. На сколько это соответствует самой идее JWT, иметь только 1 токен, который сразу и access и refresh?
  2. На сколько безопасно выставлять такому токену срок жизни неделю, две? Учитывая то, что он в веб-приложении будет жить в http куке? (не httpOnly).
  3. К каким последствиям можем привести снятие jwt guard'a с /refresh endpoint?
  4. Развивая вопрос с номером 3, приведу пример следующее: библиотека имеет конфигурации: JWT_TTL и JWT_REFRESH_TTL. Следовательно, первая в минутах нам указывает, сколько наш генерируем токен будет жить. Второй - в минутах, сколько времени мы сможем рефрешить наш полученный токен. И получаем такой расклад: если наш JWT_TTL истёк, то к /refresh мы достучаться не можем. НО! Если мы снимаем jwt защиту с /refresh, то мы можем спокойно рефрешить наши токены до тех пор, пока JWT_REFRESH_TTL не истечёт.
  5. Следовательно, вопрос для п.4 следующий: зачем нам вообще нужен JWT_REFRESH_TTL, и /refresh, если мы можем выставить для нашего access токена долго время, и не беспокоиться, что нам что-то нужно рефрешить? И зачем нам этот рефреш нужен, если мы им не можем воспользоваться им по истечении access токена?

Ответы

Ответов пока нет.