Kann ich Open Source mit Client ID wirklich nicht versenden?

Anmeldeinformationen für Entwickler (z. B. Kennwörter, Schlüssel und Client-IDs) sollen von Ihnen verwendet werden und Ihren API-Client identifizieren. Sie werden Ihre Anmeldeinformationen vertraulich behandeln und angemessene Anstrengungen unternehmen, um andere API-Clients daran zu hindern und davon abzuhalten, Ihre Anmeldeinformationen zu verwenden. Entwickleranmeldeinformationen dürfen nicht in Open Source-Projekte eingebettet sein.

( https://developers.google.com/terms/ , meine Betonung)

Bedeutet dies, dass mein Open Source Drive-Befehlszeilen-Client jeden Benutzer meiner Software dazu zwingen muss, ein neues Projekt in der Google Cloud-Konsole einzurichten? Gibt es eine bessere Option?

Es ist nicht so, dass es schwierig ist, die Client-ID und den Client “geheim” von Nicht-Opensource zu extrahieren, also warum die Unterscheidung?

Die Client-IDs und Geheimnisse von “Anwendungen installieren” sind keine echten Geheimnisse. Die Google-Dokumentation scheint zuzustimmen:

Der process führt zu einer Client-ID und in einigen Fällen zu einem Client-Schlüssel, den Sie in den Quellcode Ihrer Anwendung einbetten. ( In diesem Zusammenhang wird das Client-Geheimnis offensichtlich nicht als Geheimnis behandelt. )

( https://developers.google.com/accounts/docs/OAuth2 , wieder meine Betonung)

Am 5. November 2014 hat Google einige Änderungen an den Nutzungsbedingungen der API vorgenommen .

Wie du hatte ich ein Problem mit der folgenden Zeile.

Entwickler bitten, angemessene Anstrengungen zu unternehmen, um ihre privaten Schlüssel privat zu halten und sie nicht in Open-Source-Projekte einzubetten.

Ich habe mehrere Open-Source-Projekte auf GitHub, sie sind im Grunde Tutorials zur Verwendung der Google-APIs, einige der APIs befinden sich noch in der Beta-Phase und es braucht Zeit, um Beta-Zugriff zu erhalten. Ich hatte meine Client-ID in meine Projekte integriert, damit meine Benutzer die Anwendungen testen können.

Jetzt habe ich einige Kontakte bei Google, also hoffte ich, dass ich hier eine Art Dispensation bekommen könnte. Ich habe es geschafft, den Autor des oben genannten, sich ändernden Dienstes Dan Ciruli aufzuspüren und ihm eine E-Mail zu schicken.

Meine E-Mail war ziemlich protokolliert, Sie können es hier lesen: Änderungen des Dienstes

Um es kurz zu machen: Nein, du kannst deine Client-ID nicht mit deinem Open Source-Projekt veröffentlichen. Hier ist Dan’s E-Mail, die mir erklärt, warum.

Sie erlauben Ihnen jedoch, Sie in Googles Augen zu “imitieren”. Wenn unsere Missbrauchssysteme Missbrauch feststellen (wenn jemand versucht, einen unserer Dienste mit Ihrem Schlüssel zu erledigen), riskieren Sie, dass er Ihr Konto aus diesem Grund kündigen würde (und bitte beachten Sie, dass er nicht nur den Zugriff auf die Schlüssel, sie würden Ihr Konsolenkonto herunterfahren). Darüber hinaus wurde Ihnen der Zugriff auf die Whitelist für APIs gewährt, die für die breite Öffentlichkeit nicht verfügbar sind (und die aller Wahrscheinlichkeit nach einer gesonderten Servicebedingung entsprechen müssen) und den Zugriff für alle Benutzer freigeben. Es besteht kein Zweifel, dass ein Verstoß gegen diese Bedingungen vorliegt. Es tut uns leid, nicht die Antwort zu haben, die Sie suchen, aber Schlüssel sind die eine Möglichkeit, die wir sagen müssen, wer unsere Dienste anruft.

Das ist nur ein Teil seiner E-Mail an mich zurück. Sie können den vollständigen Beitrag im obigen Link lesen. Also, wenn Sie ihnen den Quellcode geben und sie können die Client-ID sehen. Ihre Nutzer müssen ein eigenes Projekt in der Google Cloud-Konsole erstellen. Es gibt keinen Weg darum.

Ich hoffe, das hat geholfen.

Es gibt eine bessere Option und es heißt OAuth 2.0 Dynamic Client Registration. Das ist aber immer noch in Arbeit: https://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-21 und es kann eine Weile dauern, bis Anbieter es übernommen und implementiert haben.

Bearbeiten:

Es ist kategorisch unmöglich, Authentifizierungsgeheimnisse mit einer Open-Source-App zu versenden. [Ehrlich, es macht wirklich keinen Sinn, sie mit irgendeiner App zu versenden; Bei Open-Source-Apps ist es nur augenfälliger.]