#android #android-studio #jwt #access-token
#Android #android-студия #jwt #токен доступа #android-studio
Вопрос:
У меня есть приложение для Android, в котором пользователю необходимо отправлять запросы с использованием веб-токена JSON (токены доступа / обновления). Где мне нужно правильно хранить его (или лучшие практики) с точки зрения как безопасности, так и простоты доступа к нему. Я слышал о SharedPreferences и AccountManager, но мнения разнятся от источника к источнику.
Комментарии:
1. Я думаю, что SQLLite.
Ответ №1:
У меня есть пример кода Android, который шифрует токены перед сохранением в общих префиксах, поскольку по умолчанию это небезопасное хранилище. Также это позволяет избежать вопросов о хранении токенов конечных пользователей, которые они не поймут.
Вы можете легко загрузить и запустить мое приложение, и вы заметите, что при перезапуске приложения нет запросов на вход:
При первом запуске приложения оно использует хранилище ключей Android для генерации ключа для приложения, который знает только ваше приложение:
Мое решение основано на Okta Android SDK, так что это тоже хорошее место для поиска.
Ответ №2:
Общие настройки были бы лучшим вариантом для хранения токенов. Это хранилище зависит от конкретного приложения, и другие приложения не могут получить доступ к этому пространству. Что касается шифрования, вы должны либо требовать, чтобы пользователь каждый раз вводил кодовую фразу для дешифрования (тем самым сводя на нет цель кэширования учетных данных), либо сохранять ключ в файл, и ваша проблема остается прежней. Я прилагаю детали для использования SharedPrefs ниже —
Как инициализировать?
// 0 - for private mode`
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
Editor editor = pref.edit();
Как хранить данные в общих настройках?
editor.putString("key_name", "string value"); // Storing string
или
editor.putInt("key_name", "int value"); //Storing integer
И не забудьте применить :
editor.apply();
Как извлечь данные из общих настроек?
pref.getString("key_name", null); // getting String
pref.getInt("key_name", 0); // getting Integer
Надеюсь, это поможет вам 🙂
Комментарии:
1. Для создания приложений используйте хранилище данных android-developers.googleblog.com/2020/09 /…