Аутентификация против App Engine из приложения Android с помощью федеративного входа (OpenID) - PullRequest
9 голосов
/ 05 января 2012

Я следовал учебному пособию Ника Джонсона по Аутентификация с помощью App Engine с Android

Есть ли в любом случае такой же рабочий процесс (без веб-входа) с помощью Federated Login (даже если поддержкаограничено аккаунтами Google)?

[Изменить] Дополнительная информация

Текущая настройка включает:

  • App Engine UserService, настроенный для федеративного входа в систему (openId ..gmail, aol, myspace?, ...)
  • Facebook (OAuth)
  • Twitter (OAuth)

Все типы аутентификации заключены в UserService, поэтому я могу позвонить UserService.getCurrentUser() (аналогично UserService в Appengine, но поддерживает твиттер и фейсбук).

Учетные записи могут иметь несколько методов аутентификации, связанных друг с другом.

Пока все клиенты работают в сети, и все работает хорошо.: D

Я хотел бы:

  1. Добавить общедоступный API (для веб-приложений и собственных мобильных приложений),
  2. использоватьApi для внутренних мобильных приложений.

Какие есть варианты?

Я думал об ограничении аутентификации для учетных записей Google для приложения Android, в надежде избежать входа в систему через Интернет.экран.Тем не менее, было бы неплохо поддерживать Facebook и Twitter для веб-интерфейса Api.

Ответы [ 2 ]

4 голосов
/ 06 января 2012

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

Это можно сделать с помощью WebView внутри Dialogдля гладкого пользовательского опыта.См. Пример проекта с открытым исходным кодом LeanEngine для примера реализации: server и client .Сервер немного сложен, так как поддерживает вход в Facebook и OpenID.Вход в OpenID только будет проще.В основном вам нужен только клиентский пример.

Однако, если вам не нужен OpenID и вы хотите ограничить своих пользователей учетной записью Google, вы можете использовать Google ClientLogin API . пример использования .

3 голосов
/ 07 января 2012

Я изучаю эту тему уже несколько недель, и наконец увидел свет в конце туннеля.Я надеюсь, что вы, по крайней мере, получите несколько советов из моего исследования.Во-первых, я только что понял (http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing), что OpenID и OAuth - это не одно и то же, хотя их можно использовать вместе. Мое приложение Google App Engine настроено с использованием API учетных записей Google, и в настоящее время у меня есть только клиент Android. I 'Я являюсь религиозным последователем супер-известного блога Ника Джонсона, о котором вы упомянули выше. Поэтому я использовал экземпляр AccountManager в клиенте Android для бесшовной аутентификации с моим приложением App Engine, не запрашивая у пользователя учетные данные и не перенаправляя в браузер / веб-просмотр.и т. д.

Так же, как вы хотите открыть публичный API для своего приложения GAE, я также хочу расширить свою клиентскую базу, чтобы иметь других клиентов, таких как веб-клиенты, API-интерфейсы Python, клиенты iOS и т. д.,и ни у одного из них нет такого удобного AccountManager. Итак, OAuth - очевидный выбор. Вот статья Ikai Lan из команды Google App Engine, демонстрирующая использование клиента Python, использующего OAuth для аутентификации в приложении GAE: http://ikaisays.com/2011/05/26/setting-up-an-oauth-provider-on-google-app-engine/

Забавно, я думал, что использовать Of Oauth на клиенте требуется настроить приложение GAE с OpenID / Федеративный вход в систему.Но это не так.Так что решение для меня и, вероятно, для вас тоже простое - на клиенте Android используйте AccountManager для блога Ника.А на других клиентах используйте Oauth и перенаправьте пользователя на страницу учетных записей Google, чтобы включить аутентификацию (см. Статью Ikai Lan, о которой я говорил в предыдущем абзаце).

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

Удачи!

...