1

Ich mache ein Open-Source-Knotenmodul, das Zugriff auf die privaten Google Drive-Dateien jedes Benutzers erfordert. Ich habe versucht, mich mit all diesen verschiedenen Arten der Authentifizierung zu beschäftigen und bin zu einer Straßensperre gekommen. Von dem, was ich gesammelt habe, gibt es zwei Haupttypen von AuthentifizierungsZugriff auf private Google Drive-Daten ohne OAuth2-Umleitung/Kopieren und Einfügen

  1. I, der Bibliothek Autor, bieten in meiner Bibliothek die öffentlichen und privaten Schlüssel notwendig, jeden Benutzer mit OAuth2 zu authentifizieren. Das bedeutet, dass ich ihnen eine URL geben muss, um meiner App die Erlaubnis zu geben, auf ihre Daten zuzugreifen und sie einen Zugangscode kopieren und in ihr Terminal einfügen zu lassen. Ich war in der Lage, this Tutorial durchlaufen und es funktioniert, aber diese Methode scheint gefährlich, wegen der Schlüssel, die ich mit meiner Bibliothek zu verpacken, und unnötig schwierig.

  2. Lassen Sie den Benutzer zur Google API-Konsole gehen, einen eigenen API-Schlüssel abrufen und diesen über eine Konfigurationsdatei an meine Bibliothek senden. Keine URL-Umleitung, kein Kopieren und Einfügen, nur einige private Zugangsdaten, auf die nur sie Zugriff haben.

2 klingt viel besser zu mir: Diese Bibliothek absolut nichts mit mir zu tun hat, wenn es in die Hände des Benutzers ist, so fühlt es sich falsch sie mit mir authentifizieren zu müssen. Aber von dem, was ich finde, ist der einzige Weg, dies mit Google API zu tun, ein Google-Dienst-Konto zu erstellen, laden Sie die JSON, die Sie geben, einen ähnlichen Ablauf wie der Top-Kommentar auf this Blog-Post, und geben Sie dann manuell Dienstkonto E-Mail-Zugriff auf meine persönlichen Google Drive-Dateien. Das scheint Hacky zu sein und viel Arbeit, um Zugang zu meinen eigenen privaten Daten zu bekommen. Gibt es einen besseren Weg? Es erscheint mir merkwürdig, dass dieser ziemlich standardmäßige Fluss in anderen APIs nur in der Google API über Dienstkonten verfügbar ist, aber vielleicht gibt es einen Weg und ich sehe ihn einfach nicht. Ich bin ziemlich neu in der Authentifizierung, so dass jede Hilfe überhaupt geschätzt wird. Vielen Dank!

Antwort

1

Zunächst möchte ich sagen, dass Sie Ihr Open-Source-Projekt mit der Client-ID und dem Client-Secrete, die Sie in der Google Developers-Konsole erstellt haben, nicht gegen googles terms of service freigeben können.

1.Entwickleranmeldeinformationen (wie 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 Maßnahmen ergreifen, um zu verhindern und andere API-Clients davon abzuhalten, Ihre Anmeldeinformationen zu verwenden. Entwickleranmeldeinformationen können nicht in Open Source-Projekte eingebettet werden.

Meine Antwort zu einer anderen Frage über die Offenlegung der Client-ID in open source projects.

Zweitens könnten Sie Ihre Benutzer anweisen, entweder Oauth2 oder ein Dienstkonto zu verwenden, oder beides liegt wirklich bei Ihnen.

Wenn der Benutzer nur auf seine eigenen Daten zugreift und nicht auf die Daten einer anderen Person zugreifen muss, kann er ein Dienstkonto verwenden, um einen Ordner auf Google Drive mit dem Dienstkonto zu teilen. Aber von Ihrer Seite können die Berechtigungen schwierig sein, wenn sie hochgeladen werden, das Dienstkonto wird die Datei besitzen, die auf das Google Drive-Konto des Benutzers hochgeladen wird. Sie müssen dem Dienstkonto Berechtigungen für den Benutzer hinzufügen, damit der Benutzer dann auch darauf zugreifen kann Datei.

Der einfachste Weg zu gehen ist Oauth2, wenn der Code Dateien hochlädt, die dem authentifizierten Benutzer gehören, so dass Sie nicht die gleichen Rechte haben wie bei einem Dienstkonto.

+0

Wie würde ich jeden Benutzer mit OAuth2 arbeiten lassen? Ich dachte, OAuth2 wäre, wo ich ihnen eine URL gebe, und diese URL sagt "Gib Weston die Erlaubnis, x, y und z zu machen". Aber wenn es nicht meine Anmeldeinformationen in der URL sind, was ist der Sinn? Gibt es eine Möglichkeit, sich mit OAuth2 zu authentifizieren, ohne URLs kopieren und einfügen zu müssen? – Weston

+0

Wenn sie Ihr Projekt herunterladen, müssen sie eine Konfigurationsdatei oder einen Ort erhalten, an dem sie ihre eigenen Anmeldeinformationen von der Google Developer Console hinzufügen können. – DaImTo

+0

Es wäre also der gleiche Fluss (geben Sie ihnen eine URL, sie kopieren und einfügen zurück in die Konsole), aber der OAuth-Bildschirm würde einfach sagen: "Gib [mir] Erlaubnis, x, y und z zu tun"? Es scheint sehr seltsam zu sein, dies zu tun, ich dachte mir, dass es einen Weg geben würde, all das programmatisch zu tun, wie im Service Account Flow. – Weston

Verwandte Themen