Могу ли я на самом деле не поставлять открытый код с идентификатором клиента?

Учетные данные разработчика (например, пароли, ключи и идентификаторы клиентов) предназначены для использования вами и идентификации вашего клиента API. Вы будете сохранять конфиденциальность своих учетных данных и прилагать разумные усилия для предотвращения использования таких учетных данных другими Клиентами API. Учетные данные разработчика не могут быть встроены в проекты с открытым исходным кодом.

( https://developers.google.com/terms/, мой акцент)

Означает ли это, что мой клиент командной строки Open Source Drive должен заставить каждого пользователя моего программного обеспечения настраивать новый проект в консоли Google Cloud? Есть ли лучший вариант?

Это не так, как трудно извлечь идентификатор клиента и "секрет" клиента из non-opensource, так почему же различие?

Идентификаторы и секреты клиентов "Установка приложений" на самом деле не являются секретами, и документация Google, похоже, согласна:

Результатом процесса является идентификатор клиента и, в некоторых случаях, секрет клиента, который вы встраиваете в исходный код вашего приложения. (В этом контексте секрет клиента, очевидно, не считается секретом.)

( https://developers.google.com/accounts/docs/OAuth2, снова мой акцент)

2 ответа

5 ноября 2014 года Google внесла некоторые изменения в Условия использования API.

Как и у вас, у меня была проблема со следующей строкой.

Просить разработчиков приложить разумные усилия, чтобы сохранить свои закрытые ключи закрытыми и не встраивать их в проекты с открытым исходным кодом

У меня есть несколько проектов с открытым исходным кодом на GitHub. Они представляют собой учебные пособия по использованию API Google, некоторые из которых все еще находятся в стадии бета-тестирования, и для получения бета-доступа требуется время. В мои проекты был встроен мой идентификатор клиента, чтобы мои пользователи могли тестировать приложения.

Теперь у меня есть несколько контактов в Google, поэтому я надеялся, что смогу получить какое-то разрешение здесь. Мне удалось отследить автора вышеуказанной смены сервиса Дана Цирули и отправил ему электронное письмо.

Мой электронный адрес был вполне логичным, вы можете прочитать его здесь: Изменения в обслуживании

Короче говоря, нет, вы не можете опубликовать свой идентификатор клиента с вашим проектом с открытым исходным кодом, вот электронное письмо Дэна, объясняющее мне почему.

Однако вы позволяете им "выдавать себя" за вас в глазах Google. Если наши системы злоупотреблений выявляют злоупотребления (скажем, если кто-то попытается сделать одну из наших услуг DoS, используя ваш ключ), вы рискуете, что из-за этого они закроют вашу учетную запись (и, пожалуйста, обратите внимание - они не просто ограничат доступ к ключ, они будут закрывать вашу консольную учетную запись). Более того, вам был предоставлен доступ в белый список к API-интерфейсам, которые недоступны для широкой публики (и, по всей вероятности, требуется согласие с отдельными Условиями обслуживания), и вы предоставляете доступ всем, кто этого хочет. Нет сомнений, что это нарушение этих условий. Извините, что не получили ответ, который вы ищете, но ключи - это единственный способ сообщить нам, кто звонит в наши службы.

Это только часть его письма обратно ко мне. Вы можете прочитать полный пост в ссылке выше. Так что, если вы даете им исходный код, и они могут видеть идентификатор клиента. Вашим пользователям придется создать собственный проект на консоли Google Cloud. Обойти это невозможно.

Я надеюсь, что это помогло.

Есть лучший вариант, и он называется OAuth 2.0 Dynamic Client Registration. Это все еще в стадии разработки: https://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-21 и поставщикам может потребоваться некоторое время, чтобы принять и внедрить его.

Редактировать:

Категорически невозможно отправить секреты аутентификации с помощью приложения с открытым исходным кодом. [Честно говоря, не имеет смысла отправлять их с любым приложением; это становится более очевидным в приложениях с открытым исходным кодом.]

Другие вопросы по тегам