Где сохранить учетные данные клиента OAuth на Android

У меня есть приложение для Android, которое взаимодействует с WebAPI через защиту OAuth. Для получения токена доступа мне нужно отправить учетные данные OAuth (т.е. идентификатор клиента и секрет клиента) в заголовок запроса. Мой вопрос: где я должен хранить эти 2 значения (идентификатор клиента и секрет клиента), чтобы приложение могло использовать его, когда это необходимо. В настоящее время я просто запрограммировал его в вызове. Можно ли хранить их в файле strings.xml?

Пожалуйста, поделитесь с пользователями pref, чтобы хранить защищенные данные, потому что, если какой-либо один обратный инженер вашего приложения получит жестко закодированные строки.shared pref – это безопасное место, где вы можете хранить данные.

Если вас беспокоит безопасность, вы можете сохранить данные в SharedPreference, зашифровав и сохранив ключи шифрования в Android Keystore.

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

Вот хороший учебник для создания keystores. http://www.androidauthority.com/use-android-keystore-store-passwords-sensitive-information-623779/

Нет, это не безопасно хранить в strings.xml. SharedPreferences этого используйте SharedPreferences . Например:

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

А затем сохраните свой идентификатор клиента и секрет клиента следующим образом:

 sharedPreferences.edit() .putString("client_id", "your_client_id") .putString("client_secret", "your_client_secret") .apply(); 

Чтобы вернуть идентификатор клиента и клиентский секрет из SharedPreferences:

 String clientId = preferences.getString("client_id", "No ID"); String clientSecret = preferences.getString("client_secret", "No Secret");