Создание ApiKey и SecretKey для мобильного приложения - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать API для нашего проекта, чтобы мы могли использовать его в нашем приложении для Android. Вот сценарий:

  • Пользователь открывает приложение
  • Он вводит имя пользователя (телефон или адрес электронной почты) и пароль
  • Приложение отправляет его на сервер для проверки учетной записи
  • если оно подтверждено, то приложения вызывают другие API для отображения продукта и и т.д. для пользователя

Дело в том, что имя пользователя и пароль должны быть хешированы, верно? Поэтому, если я хочу их хэшировать, мне нужен ключ (секретный ключ), который и приложение, и сервер знают, чтобы они могли обмениваться данными, и вот мое решение (мне нужна помощь с решением, поскольку я думаю, что оно может быть немного неправильным)

  • приложение читает уникальный идентификатор устройства, который Google называет «идентификатором экземпляра», так что теперь я называю это идентификатором экземпляра. (ссылка: https://developer.android.com/training/articles/user-data-ids#instance-ids-guids )
  • приложение отправляет "идентификатор экземпляра" на сервер
  • сервер создает новый ключ API и секретный ключ для этого идентификатора экземпляра и хеш их с этим ID экземпляра и отправить его обратно в приложение
  • теперь каждый раз, когда пользователь отправляет данные или запрос (это может быть их логин информация или просто запрос к API) хэш запрос с Секретный ключ и отправляет ключ API в заголовке авторизации HTTP.
  • когда данные запроса получены сервером, он считывает ключ Api из Заголовок авторизации HTTP, находит секретный ключ, связанный с этим Ключ API и используйте секретный ключ для чтения данных, которые передаются в сервер.

Я никогда не делал ничего подобного, поэтому я в замешательстве. Одно из преимуществ этого заключается в том, что я могу показать список установленных приложений для пользователя, и он / она может отключить это приложение, чтобы оно победило. ' не сможет войти.

Мое решение безопасно и безопасно? Я знаю, что это не проблема кодирования, это проблема решения / алгоритма. Но, как я уже говорил, я никогда не делал ничего подобного. Если мое решение неверно, я был бы очень признателен, если бы вы указали мне правильное направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...