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