#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, безопаснее.