Android: сохранение имени пользователя и пароля?

Если я хочу сохранить имя пользователя и пароль, которые будут использоваться в приложении для Android, что это лучший способ сделать это? Это через экран настроек (но что, если пользователь пропустит это?), Или всплывает диалоговое окно и спрашивает у пользователя учетные данные? Если это так, мне нужно поддерживать состояние для приложения. Как мне это сделать?

Ответ 1

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

Совет (Android dev guide):

В целом мы рекомендуем минимизировать частоту запроса пользователя учетные данные - сделать фишинг-атаки более заметными, и меньше вероятно, будет успешным. Вместо этого используйте токен авторизации и обновите его.

По возможности, имя пользователя и пароль не должны храниться на устройство. Вместо этого выполните начальную проверку подлинности с использованием имени пользователя и пароль, предоставленный пользователем, а затем использовать недолговечный, токен авторизации для конкретной службы.

Использование AccountManger - лучший вариант для хранения учетных данных. SampleSyncAdapter предоставляет пример того, как его использовать.

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

Ответ 2

Вы должны использовать Android AccountManager. Он предназначен для этого сценария. Это немного громоздко, но одна из вещей, которые она делает, является недействительной для локальных учетных данных, если SIM-карта меняется, поэтому, если кто-то проведет ваш телефон и выбрасывает новую SIM-карту, ваши учетные данные не будут скомпрометированы.

Это также дает пользователю быстрый и простой способ доступа (и потенциального удаления) сохраненных учетных данных для любой учетной записи, имеющейся на устройстве, из одного места.

SampleSyncAdapter (например, @Miguel) - пример, который использует учетные данные хранимой учетной записи.

Ответ 3

Я думаю, что лучший способ защитить ваши учетные данные - сначала подумать о том, чтобы хранить пароль с шифрованием в файле account.db, который не может быть легко доступен в устройствах без корней, а в случае корневого устройства хакеру необходимо чтобы расшифровать его.

Другой вариант - сделать всю вашу аутентификацию, как это делает Gmail. после первой проверки подлинности с сервера Gmail. у вас есть Auth Token, который будет использоваться в случае вашего пароля. этот токен будет храниться в текстовом формате. Этот токен может быть ложным, если вы измените пароль с сервера.

последний вариант, который я бы рекомендовал вам включить 2-факторную аутентификацию и создать пароль для вашего устройства. После потери устройства все, что вам нужно, это отключить это устройство.

Ответ 4

Вы также можете посмотреть образец SampleSyncAdapter из SDK. Это может помочь вам.

Ответ 7

С новым (Android 6.0) оборудованием для отпечатков пальцев и API вы можете сделать это, как в этом пример приложения github.

Ответ 8

Они ранжируются в порядке сложности, чтобы разбить вашу скрытую информацию.

  • Сохранить в открытом виде

  • Хранить в зашифрованном виде с помощью симметричного ключа

  • Использование Keystore Android

  • Хранить в зашифрованном виде с помощью асимметричных клавиш

источник: Где лучше всего хранить пароль в вашем приложении для Android

Сам Keystore зашифровывается с помощью пользовательского PIN-кода/пароля шлюза, поэтому, когда экран устройства заблокирован, Keystore недоступен. Имейте это в виду, если у вас есть справочная служба, которая может потребоваться для доступа к вашим приложениям.

источник: Простое использование Keystore Android для хранения паролей и другой конфиденциальной информации

Ответ 9

Информация в http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html является довольно прагматичным, но основанным на использовании "скрытым-android-apis". Это нужно учитывать, когда вы действительно не можете обойти хранение учетных данных/паролей локально на устройстве.

Я также создал очищенную суть этой идеи в https://gist.github.com/kbsriram/5503519, которая может быть полезна.