Угловые и тонкие рамки JWT-аутентификация и ток обновления токена

Я хотел бы знать, является ли то, что я сделал до сих пор, является надежным способом аутентификации/обновления токена и если есть какие-то недостатки или уязвимости, о которых я должен знать, поскольку я пытался ограничить взаимодействие с базой данных до нуля. Здесь идет.

  • Пользователь аутентифицируется через обычное имя пользователя/пароль или через Facebook.
  • Бэкэнд PHP генерирует токен с истечением 30 минут и отправляет его клиенту angularjs
  • Значок JWT хранится в $localStorage
  • Ток JWT вводится с помощью перехватчика в каждом заголовке запроса
  • Все тонкие маршруты, требующие аутентификации, проверяют отправленный токен с помощью промежуточного программного обеспечения.
  • Если токен недействителен (истек, был изменен, не подходит для этой конкретной роли), Slim ответит на ошибку 401/403.
  • Служба angular проверяет каждую минуту, если токен истекает
  • Если токен близок к истечению (от 5 до 1 минуты), служба отправляет старый токен в другую конечную точку API.
  • Конечная точка API проверяет достоверность токена и отвечает новым, время истечения которого составляет +30 минут.
  • Служба опроса, о которой я упоминал, заменяет старый токен в $localStorage.
  • Промыть и повторить.

NB: SSL будет реализован в производстве

Баунти присуждена @Валдасу, поскольку он был единственным, кто фактически ответил

Ответ 1

Нет необходимости проверять срок действия маркера цикла. Я использую https://github.com/auth0/angular-jwt в качестве библиотеки для моих проектов Angular, которая предоставляет способ обновления токена непосредственно перед запуском HTTP-запроса, упрощая auth механизм.

Кроме того, вы можете удалить токен из запроса, если его загрузка шаблона (заканчивается на .html), но это только личное предпочтение.