Постоянная аутентификация приложений Android

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

Я хочу, чтобы он работал так же, как приложение facebook на моем телефоне, оно всегда регистрируется, никогда, похоже, не истекает.

моя первая идея состояла в том, чтобы использовать User/Pass и сохранять их локально на телефоне с помощью SSL-шифрования. Но это может быть проблема безопасности с утерянным телефоном, и теперь люди могут видеть логин и пароль (даже если они хэшированы/зашифрованы, это похоже на проблему)

мой другой вариант - использовать Oauth 1a/2, но это похоже на ту же проблему, если я не ошибаюсь, кроме как с токеном auth, что означает ту же проблему, что и на уровне api.

Я также посмотрел в androids accountManager, но я планирую сделать это для iOS, поэтому я хочу использовать общие методы для обоих.

Ребята, что вы думаете?

Общие вопросы:

  1. Обновляется ли токен Oauth так же, как и повторный вход в систему, или это просто новый токен Oauth?

  2. Есть ли способ получить уникальный идентификатор с телефона, чтобы определить, используется ли "новый телефон"?

  3. Кто-нибудь знает, как facebook или google обрабатывают свою аутентификацию/авторизацию на своих устройствах? Они просто просто хранят токен аутентификации, который никогда не истекает, или когда он истекает, просто выдает новый?

Я предполагаю, что приложения для Android кажутся уязвимыми для меня из "что, если кто-то нашел эксплойт, чтобы вытащить токены аутентификации без доступа root?" точка зрения, я ошибаюсь, думая об этом?

Я также ошибаюсь, полагая, что единственное, что может помешать кому-либо получить доступ к моей учетной записи через api, если они получили мой токен, - это если я получаю доступ и использовал api, и он обновил мою Oauth до нового значения, чтобы сделать мою старую устаревшей? (при условии, что нет надежного способа определить, какое устройство является)

0
источник поделиться
1 ответ

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

То, что вы хотите сделать, это получить токен OAuth с вашего сервера, как только пользователь войдет в систему, сохранит его и будет использовать для подписи всех ваших запросов. Если кто-то другой получит ваш токен, вы можете аннулировать его, чтобы они не могли делать больше запросов от вашего имени.

Что касается ваших вопросов:

  1. Недействительный токен будет похож на ваш логин. Обновление (замена токена для нового) будет похоже на логин.
  2. Да, вы можете найти, как здесь
  3. Я использовал аутентификацию с помощью FB и Twitter в своих приложениях раньше, и, как он работает, после аутентификации пользователей вы получаете короткий токен, который вы можете обменять на долгоживущий. Затем вы сохраните это на устройстве и будете использовать для будущих запросов. Дополнительная информация здесь.
+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос