Использование Android AccountManager для аутентификации пользователей на сервере - PullRequest
20 голосов
/ 25 февраля 2011

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

Предполагается, что пользователь имеет:

  1. ввел свои учетные данные на устройстве Android для Google и Facebook (это те, которые мне интересны)
  2. разрешено приложению использовать сохраненные учетные данные на устройстве Android
  3. приложение получило данные (учетную запись пользователя и токен) от Android AccountManager успешно

Теперь я хочу правильно и безопасно сообщить серверу, что приложение на устройстве аутентифицировало пользователя. Как сервер может проверить, что это не фальшивка? Есть ли способ проверить токен с помощью Google и Facebook на сервере, не требуя взаимодействия с пользователем?

Спасибо.

Ответы [ 3 ]

1 голос
/ 22 января 2013

вы должны взглянуть на этот вопрос: Генерирование серийного номера для конкретного устройства

вы можете взять имя учетной записи в зависимости от используемой им службы, например:

AccountManager am = AccountManager.get(this); // "this" references the current Context

Account[] accounts = am.getAccountsByType("com.google");

но вы должны объявить его в манифесте и попросить пользователя подтвердить разрешение.

0 голосов
/ 20 января 2013

Есть несколько способов сделать это, пытаясь убедиться, что это не «фальшивка».Во-первых, при первоначальной аутентификации (где вы получаете информацию об учетной записи пользователя), получите идентификатор их устройства, а также их местоположение (не точное местоположение, но используя их IP-адрес, вы можете получить область своего рода).Таким образом, если кто-то попытается подтвердить подлинность с ложными учетными данными, это остановит их.Я рекомендую сообщить фактическому пользователю, что кто-то пытается сделать это, отправив ему электронное письмо.При первоначальной аутентификации вы также можете настроить пин-код или пароль, которые затем будут сохранены на устройстве.Отправьте хешированную версию пин-кода на сервер и проверяйте, что каждый раз, когда пользователь проходит аутентификацию.

Я могу быть совершенно не согласен с тем, что вы пытаетесь выполнить, так как описание является скорее псевдо, чем чем-либо, но я надеюсь, что это помогло

0 голосов
/ 02 ноября 2012

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

Это может быть не метод защиты от заполнения, но в зависимости от вашего варианта использования он может работать.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...