Подтвердить что ты не робот

Как разрешать мобильные приложения с третьим лицом по Oauth, но подключитесь к моему сервису, а не к третьей стороне

Мое приложение архивировано следующим образом: у меня есть веб-сервис (работает на GAE, не очень соответствующий этому вопросу), а данные, которые эта служба содержит, доступны через веб-сайт и через мобильные и настольные приложения.

В настоящее время пользователь аутентифицируется на веб-сайте через Google ClientLogin, и приложения аутентифицируются/получаются с помощью встроенного поставщика услуг GAE. (OAuth используется здесь в основном для аутентификации, мое приложение фактически не использует внешние данные через OAuth, кроме уникального идентификатора пользователя и адреса электронной почты.)

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

Давайте рассмотрим Facebook в качестве примера. Когда мобильное приложение проходит через поток oauth Facebook и получает токен доступа, этого недостаточно - потому что его служба, а не приложение, на самом деле должна разговаривать с facebook для получения контактной информации и уникального идентификатора пользователя. Это заставляет меня думать, что процесс OAuth должен происходить в контексте моего сервиса, а не в мобильном приложении. Затем мое обслуживание становится потребителем, а Facebook - провидером oauth, и служба держится за токен доступа oauth, это происходит, когда пользователь устанавливает свою учетную запись в первый раз.

Если это правильный подход, где это означает, что проверка подлинности для приложений? Что происходит, когда пользователь уже имеет учетную запись и устанавливает новый экземпляр мобильного приложения? Я предполагаю, что вы также проходите процесс oauth, сопоставляя учетные данные с данными, уже сохраненными моей службой, а затем выдаете мой собственный токен доступа в приложение из службы, чтобы разрешить этот экземпляр приложения. Это кажется запутанным и хакерским.

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

Что я не вижу и/или не понимаю концептуально неправильно?

4b9b3361

Ответ 1

Несколько коллег и я когда-то делали проект, совершенно похожий по своей природе, еще в университете. Мы аутентифицировали наших пользователей через Facebook или Foursquare, используя их соответствующие API OAuth.

Нативная версия Android-приложения открыла WebView с начальной страницей поставщика OAuth, которая после аутентификации перенаправлена ​​обратно на наш сервис. Затем наша служба сделала запрос на токен OAuth от поставщика OAuth (у Foursquare есть некоторые довольно простые инструкции). Когда мы получили этот токен, мы настроили сеанс с использованием файлов cookie, доступ к которым можно получить из приложения.

Чтобы проверить сеансы, мы только что проверили, был ли токен доступа все еще действительным с провайдером. Мы также использовали уникальные идентификаторы пользователей соответствующих поставщиков, чтобы отличать пользователей.

Итак, да, что сработало для нас: Сделайте аутентификацию и авторизацию приложения, а не самого приложения.