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