Безопасен ли этот поток аутентификации без пароля? - PullRequest
0 голосов
/ 17 ноября 2018

Я хотел бы реализовать поток аутентификации без пароля для моего мобильного приложения, для которого требуется только, чтобы пользователь щелкнул ссылку в своем электронном письме для входа в систему. Аналогично тому, как Slack обрабатывает аутентификацию.Я буду использовать node и jwt для этой реализации.

Я думаю, что придумал безопасный дизайн, но я уверен, что что-то упустил.Я хотел бы получить некоторую критику от сообщества *.

Вот и мы:

  • Пользователь открывает мобильное приложение.
  • Мы проверяем, есть ли у пользователя токенв их локальном хранилище.
  • Если они это сделают, мы добавляем этот токен к их заголовкам и отправляем на домашнюю страницу приложения.
  • В противном случае мы просим их ввести свой адрес электронной почты, чтобы начать работу.
  • Когда они нажимают «Отправить», мы отправляем email address в конечную точку requestMagicLink на нашем сервере.
  • Сервер проверяет базу данных на пользователя с этим email address
  • Если мы найдем пользователя с этим электронным письмом, мы берем id у этого пользователя
  • Если пользователя не существует, мы создаем нового пользователя и получаем это id
  • Мы используем JWT для создания токена с id, а наш secret, срок действия которого истекает после 1 hour
  • . Мы отправляем этот токен пользователю по ссылке в электронном письме.
  • При щелчке эта ссылка отправляет запрос GET на наш сервер в конечной точке magicLogin с token в параметре запроса
  • Если он не проходит проверку, мы перенаправляем пользователя на экран, где мы запрашиваем его адрес электронной почты для начала.
  • Если он успешен, мы генерируем новый токен JWT, используя их id и наш secret, что doesn't have an expiration, а затем передаем его обратно пользователю в параметрах URL, который перенаправляет их на страницу успеха в нашемapp.
  • Приложение берет токен из параметра и сохраняет его в локальном хранилище, пока пользователь не выберет выход из системы, и пользователь не будет перенаправлен на домашнюю страницу.
  • Запросы к APIвсе теперь содержат токен в заголовках, и пользователь может идти.
...