Google API: как пройти аутентификацию без перенаправления? - PullRequest
12 голосов
/ 10 сентября 2011

Мы хотим использовать Google Doc API для создания документа (в нашей собственной учетной записи), когда наши конечные пользователи выполняют какие-либо действия на нашем сайте.

Проблема в том, что мы попытались внедрить OAuth 2.0протокол, как предлагается в документации к протоколу v3.0.Метод apiClient :: authentication выполняет перенаправление.Это серьезная проблема, потому что наши пользователи не знают доступа к нашей собственной учетной записи ... и мы не хотим предоставлять им доступ в любом случае;)

(Другими словами, мыне создавая приложение, которое позволяет нашим пользователям редактировать свои собственные данные, но взаимодействовать с нашими данными, например, с базой данных.)

Я читал, что целью OAuth 2.0 было избегать управления учетными данныминаших пользователей.Я лично согласен с этой концепцией, но в нашем случае мы не хотим проходить проверку подлинности в учетной записи Google наших пользователей ...

Итак, каков наилучший подход для получения действительногоаутентификация без какого-либо взаимодействия с конечным пользователем?

Ответы [ 3 ]

17 голосов
/ 20 сентября 2011

То, что вы описываете, это не то, как 3-х сторонний OAuth был спроектирован для использования.

3-х сторонний OAuth - это все о делегированной аутентификации, когда пользователь (который знает свой пароль) можетпредоставить ограниченный и отзывной доступ к ресурсам приложения.Это приложение никогда не видит пароль пользователя.Чтобы безопасно позволить приложению олицетворять пользователя, требуется много работы.

Возможно, вы захотите использовать поток OAuth (2-legged), где учетные данные consumer_id / consumer_secret встроены в ваше приложение.,Здесь ваше приложение не выдает себя за вашего конечного пользователя, и перенаправление браузера не будет задействовано.

Вот дополнительная информация об использовании двухстороннего OAuth в Службах Google: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

И этохорошее описание 3- против 2-ноги OAuth: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

4 голосов
/ 01 октября 2013

Вам нужно будет использовать СЕРВИСНЫЙ СЧЕТ.По сути, вы жестко закодировали доступ к этой учетной записи в своем серверном приложении.Затем вы используете общий доступ, чтобы предоставить доступ к учетной записи для содержимого, которое вы хотите.Например, вы можете предоставить Google Doc или профиль Analytics общий доступ к СЕРВИСНОЙ УЧЕТНОЙ ЗАПИСИ.

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

Обновлено2018-12-12: https://gist.github.com/fulldecent/6728257

1 голос
/ 10 сентября 2011

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

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

...