Безопасный метод сохранения учетных данных в Android

Я разрабатываю приложение для Android. Для аутентификации пользователю необходимо ввести имя пользователя и пароль, а сервер возвращает токен аутентификации с истекающим сроком действия.

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

Я знаю о сохранении данных с помощью SharedPreferences. Но действительно ли они безопасны? Могу ли я использовать AccountManager для этой цели?


person George Arokiam    schedule 16.11.2017    source источник
comment
SharedPreferences, безусловно, не следует считать безопасным   -  person tyczj    schedule 16.11.2017
comment
Прочтите этот пост, принятый ответ — технический руководитель от Android-разработчика в Google в соответствии с другим ответом stackoverflow. stackoverflow.com/questions/785973/   -  person Jimmy    schedule 16.11.2017


Ответы (1)


Наличие фоновой службы, которая по истечении срока действия токена будет автоматически входить в систему, будет не очень безопасной.

Нельзя ли увеличить срок действия приказа? Поскольку сохранение учетных данных и периодические попытки входа в систему были бы не очень безопасными.

person Swatarianess    schedule 16.11.2017
comment
Я не должен менять время истечения срока действия, так как сервис используется и другими. Даже если я продлю срок действия токена, как вы предлагаете, мне все равно придется где-то хранить токен. Поэтому, если я беспокоюсь о защите имени пользователя и пароля, я должен также беспокоиться о защите токена, который теперь действителен в течение более длительного периода. Определенно не тот ответ, который я ищу. Спасибо, в любом случае - person George Arokiam; 16.11.2017
comment
Возможным процессом может быть перевыпуск токенов в случае необходимости. Во-первых, подтвердите старый токен, а затем проверьте, существует ли еще пользователь, или доступ не был отозван, или что-то еще, что имеет смысл для вашего приложения. Затем выпустите новый токен с продленным сроком действия. Промыть и повторить. Фоновая служба, выполняющая это, и имеющая класс, который обрабатывает повторную выдачу, вероятно, будет тем, что вы ищете. Нет необходимости сохранять учетные данные, и пользователь в безопасности. - person Swatarianess; 16.11.2017
comment
Опять же, я не понимаю, как это решает мою проблему безопасности. Вы говорите, что если я получу доступ к чьему-то токену один раз, я смогу просто продолжать получать новые токены для его учетной записи, поскольку сервер все равно вернет мои новые токены без какой-либо аутентификации. - person George Arokiam; 17.11.2017
comment
Нет. Во-первых, большую часть управления токенами лучше всего выполнять на стороне сервера, а не на устройстве. Во-вторых, извините, я говорю о двух отдельных токенах. Один для доступа и один для обновления. Auth0 продает фантастические услуги аутентификации, а также объясняет это лучше, чем я. auth0.com/learn/refresh-tokens - person Swatarianess; 17.11.2017