Аутентификация клиента Android для REST API server

#android #node.js #api #rest #express

#Android #node.js #API #rest #экспресс

Вопрос:

У меня есть вопрос относительно методов аутентификации для сервера REST API с использованием Node и Express и клиента Android.

В настоящее время я разрабатываю приложение, в котором вы можете зарегистрировать учетную запись пользователя. Введенный пароль шифруется с помощью BCrypt и затем отправляется на сервер REST API. После этого учетные данные пользователя сохраняются в MongooseDB.

При входе в систему клиент Android должен каким-то образом аутентифицироваться, чтобы перейти к MainActivity. При вводе адреса электронной почты, используемого при регистрации вместе с паролем, в REST API отправляется запрос, который ищет адрес электронной почты. При обнаружении он возвращает все учетные данные пользователей, включая зашифрованный пароль, клиенту Android. Затем проверяется пароль. Если это удастся, приложение перейдет к MainActivity.

Теперь я знаю, что на самом деле это не похоже на аутентификацию, поскольку сервер ничего не знает о том, что я сейчас аутентифицируюсь, и ему все равно. С другой стороны, полученный пароль от REST API зашифрован.

Можно ли запустить «аутентификацию», как я делаю сейчас, или мне следует подумать о том, чтобы сделать это по-другому? Если да, то каков был бы простой способ запустить и запустить надлежащую аутентификацию?

Спасибо!

Комментарии:

1. Если вы хотите защитить какие-либо ресурсы на сервере, этот метод бесполезен. Предположим, что кто-то подключается, не используя ваше приложение.

2. Это правда. Итак, что было бы простым способом реализовать безопасную аутентификацию?

Ответ №1:

  • Храните электронную почту и хэшированный соленый pw на своем сервере.
  • Когда клиент отправляет вам соответствующую комбинацию email pw, верните им токен SessionID и токен обновления, также сохраните оба из них на своем сервере.
  • Затем идентификатор сеанса должен отправляться с каждым запросом от клиента, чтобы сервер знал, что он аутентифицирован, и от кого исходит запрос.
  • Срок действия идентификатора сеанса должен истечь раньше (примерно через день или два, по сравнению с неделей для токена обновления), после чего пользователь получает новый, отправив токен обновления.
  • Если токен обновления истек, пользователь должен снова отправить email pw и получить новый из обоих.
  • используйте tls 1.2 для подключения, иначе это действительно плохо

Или просто даже не храните пароли на своем сервере, вместо этого используйте Google login и / или какой-либо другой oauth, безопаснее.