В Google App Engine можно ли связать токен Google OAuth 2 и токен SACSID, полученные с помощью Android AccountManager? - PullRequest
7 голосов
/ 01 декабря 2011

Я пишу приложение Google App Engine вместе с клиентом CLI, клиентом Android и клиентом Javascript.Цель этого приложения - позволить пользователю управлять телефоном Android, на котором установлен клиент Android, с помощью CLI или клиента Javascript.

Аутентификация играет решающую роль, так как ошибка может позволить злонамеренномупользователь для управления чужими телефонами.

Клиент Android написан и работает.Он аутентифицирует пользователя, используя этот метод .По сути, это дает мне так называемый токен SACSID, который я могу сохранить в cookie.Когда этот cookie установлен, App Engine распознает моего пользователя.Затем серверное приложение может вызвать UserService, чтобы получить пользователя, которому необходимо вызвать getUserId ().getUserId () возвращает мне непрозрачную строку, которая идентифицирует моего пользователя.Пока все хорошо.

Теперь я пишу клиенты JS и CLI.Поскольку у клиента CLI нет надежного способа отображения CAPTCHA или открытия браузера, я полагаю, что ему необходимо использовать Device API («Вход в систему клиента» не вариант).Этот API требует использования OAuth 2 для аутентификации.Кроме того, я хочу, чтобы клиент JS имел доступ к контактам пользователя, что также указывает на то, что OAuth 2 подойдет.

Если мой пользователь аутентифицируется с использованием OAuth 2, я смогу каким-то образом преобразовать этот Google OAuth 2маркер в той же непрозрачной строке, которую я получаю при подключении клиента Android?Если нет, могу ли я изменить свое Android-приложение так, чтобы оно использовало OAuth вместо токена Sacsid?

Точнее говоря, я вижу три вещи, которые могут решить мою проблему:

  1. Способ получения токена OAuth 2 от диспетчера учетных записей
  2. Способ обмена токена OAuth 2 на токен SACSID
  3. Способ получения одинакового непрозрачного идентификатора пользователя с токеном SACSID иOAuth2, но только если у меня может быть обе системы аутентификации в одном приложении.

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

  • Каждый раз, когда я получаю запрос OAuth 2, мне нужно будет вызывать API Google, чтобы получить адрес электронной почты пользователя (или создать свою собственную систему токенов, которая кажетсянебезопасно и создает много других трудностей).
  • Адрес электронной почты данного пользователя может измениться, и я потеряю связь между пользователем и его предыдущими данными.

1 Ответ

0 голосов
/ 12 ноября 2013

Вместо этого используйте конечные точки:

https://developers.google.com/appengine/docs/java/endpoints/

Они используют oauth2, их легко реализовать и они поддерживают Android IOS и Web.

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