Мне нужно реализовать удобный способ определить, используется ли мобильное приложение действительным клиентом или нет. Мои клиенты сказали мне, что если они потеряют свой мобильный телефон, они обязательно свяжутся с оператором и заблокируют SIM-карту.Схема аутентификации для приложения для Android: когда SIM-карта заблокирована или заменена другим, приложение перестает работать
Таким образом, кажется естественным связать аутентификацию с действительностью SIM-карты (приложение работает до тех пор, пока правильная SIM-карта присутствует и не заблокирована). Затем, в случае потери, клиенту нужно только заблокировать SIM-карту, которую он или она будет делать в любом случае (поскольку интернет-банки отправляют SMS-сообщение для одобрения транзакций на мобильный телефон).
Я попытался прочитать данные, связанные с SIM-картой, но работает только на некоторых телефонах, а не на других (иногда я получаю только пустые строки вместо номера IMEI).
Как я могу реализовать механизм аутентификации, который
- легко для пользователя (не требует от пользователя для создания/ввести новый пароль),
- обеспечивает приложение с информацией ли в настоящее время вставленная SIM-карта
- такая же, как SIM-карта, которая была там при первом запуске приложения и
- не заблокирован?
Если это невозможно, то, что проверка подлинности альтернатива существует (кроме электронной почты/пароля и номера телефона с подтверждением SMS)?
Обновление 1 (11.08.2013 14:17 MSK): Одним из очевидных решений является использование номера телефона в качестве имени пользователя и 6-значного числа сгенерированных сервером в качестве пароля.
Затем аутентификация будет работать так:
- На первом запуске, пользователь вводит свой номер мобильного телефона.
- Сервер отправляет ему или ей сообщение (SMS) с 6-значным паролем.
- Пользователь вводит этот пароль, и приложение начинает работать.
- Через регулярные промежутки времени приложение просит пользователя обновить пароль (новые пароли доставляются также через SMS).
Что вы думаете об этой опции?
Можно ли как-то улучшить?
IMEI идентифицирует устройство, а не данные SIM/пользователя. – Rajesh
ваш второй подход является рискованным. Что делать, если пользователь Потеря вашего телефона? Ваш подход является частью двухфакторной аутентификации, но вы пропустили самую настоятельную вещь, то есть общий секрет. Я предлагаю вам использовать Android Keystore. Заблокируйте его с помощью pincode пользователя, подсчитайте количество попыток пользователя.Задержать попытку или отбросить учетные данные пользователя после указанного количества трасс. В дополнение к этому подход к SMS может укрепить его. Удачи! – samson
@samson Спасибо. Что вы думаете об использовании адреса электронной почты пользователя в качестве места для связи в случае потери (когда пользователь теряет телефон, он отправляет электронное письмо, которое блокирует приложение)? –