Как авторизовать мобильные приложения с помощью стороннего поставщика по протоколу oauth, НО подключиться к моей службе, а не к третьей стороне

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

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

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

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

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

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

Что я не вижу и / или концептуально ошибаюсь?

17
задан tempy 3 November 2011 в 13:59
поделиться