@Marox
Человек

Как должна производиться авторизация пользователя на сервере?

Пишу сервер для мобильного приложения, у меня есть несколько мыслей, как реализовать авторизацию, но я не знаю, насколько они правильны и безопасны: пользователь вводит свой логин и пароль в клиенте, данные отправляются на сервер -> генерируется токен со сроком годности в 12 часов и рефрештокен -> отправляется пользователю и клиент их сохраняет -> далее все запросы на сервер будут приходить с токеном -> сервер сверяет токен и смотрит, не вышел ли его срок годности, если вышел, то отправляет ошибку, клиент ее принимает и посылает рефреш токен, сервер его сверяет и если все хорошо, то оправляет токен. Правильно ли я понимаю? Или надо как-то по-другому?
  • Вопрос задан
  • 501 просмотр
Пригласить эксперта
Ответы на вопрос 2
@aol-nnov
почему бы не воспользоваться готовыми алгоритмами? например, oauth2.
Ответ написан
zo0m
@zo0m
full stack developer
https://jwt.io
современный подход, кратко: храните у пользователя токен, и ключ, который доказывает серверу что токен не поддельный.
Прикол в том, что вы таким образом можете хранить у пользователя сессионные данные, это хорошо для масштабирования проекта ( не нужно думать на какой ноде лежит пользовательская сессия, а можно кидать его на любую). Т.е. можно хранить например: {userId: 123, userRole : 'admin' }
Проблемы с JWT это с обновлением токена. Делают либо бессрочный доступ, либо например на месяц, через месяц пользователь будет вынуждень заново залогинится. Не удобно, но решаемо, на стековерфлоу были примеры обхода этого ограничения при помощи рефреш токена.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы