Я занимаюсь разработкой RESTful API-сервера для связи с кроссплатформенными клиентами, такими как Android, iOS, веб-браузер и т. Д.
При успешном входе пользователя по имени пользователя и паролю этот сервер выдает токен доступа (JWT, 5 минут) и токен обновления (GUID, 20 дней).
Когда мы разрабатываем клиентское приложение Android для связи с сервером, мы просто можем хранить эти токены на мобильном устройстве, и я считаю, что это не будет проблемой с точки зрения безопасности (при использовании SharedPreferences
).
Но когда речь заходит о веб-браузерах, (React App) мне пришлось решить, где хранить эти токены. Наконец, я решил HttpOnly Cookie
, потому что я могу легко управлять атаками CSRF, а не XSS.
Вскоре я сомневаюсь, что это типичный дизайн. Например, пользователи веб-браузера не могут выйти из системы, когда они хотят. Поэтому я решил изменить сервер-оболочку (Node.js) между приложением React и сервером RESTful API.
В моем втором проекте приложение React и сервер-оболочка аутентифицируют модель cookie-файлов сеанса, используя passport.js
для примера. И когда оболочка распознает запрос, прошедший проверку подлинности, оболочка выдает токен краткосрочного доступа (1-минутный JWT) и реорганизует запрос, вставляя только что выданный маркер доступа в заголовок, отправленный на сервер API RESTful.
Это разумный процесс? Заранее спасибо.