API Google: как аутентифицироваться без перенаправления?

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

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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