Funktionsweise der Nutzerautorisierung

Wenn Sie neu bei Google Identity Services oder der Autorisierung sind, lesen Sie zuerst die Übersicht.

Google bietet eine JavaScript-Bibliothek mit Autorisierungsfunktionen, mit denen Sie Zugriffsbereiche verwalten, die Nutzereinwilligung einholen und die Arbeit mit standardmäßigen OAuth 2.0-Abläufen vereinfachen können. Ihre Webanwendung, die im Browser des Nutzers ausgeführt wird, verwendet diese Bibliothek, um den impliziten OAuth 2.0-Ablauf zu verwalten oder den Autorisierungscode-Ablauf zu starten, der auf Ihrer Backend-Plattform abgeschlossen wird.

Bereiche nur für die Authentifizierung

Mehrere Bereiche werden nur für die Nutzerauthentifizierung verwendet: email, profile und openid. Wenn Ihre App nur diese Bereiche verwendet, sollten Sie prüfen, ob ein JWT-ID-Token und Über Google anmelden für die Registrierung und Anmeldung von Nutzern Ihren Anforderungen entsprechen. In den meisten Fällen ist dies die einfachste Methode für die Nutzerauthentifizierung.

Wichtige Begriffe und Konzepte

In diesen Anleitungen wird davon ausgegangen, dass Sie mit den OAuth 2.0-Konzepten und IETF-Standards wie RFC6749 vertraut sind. In den Autorisierungsleitfäden werden die folgenden Begriffe verwendet:

  • Ein Zugriffstoken ist eine kurzlebige, von Google ausgestellte Nutzeranmeldedaten, die zum sicheren Aufrufen von Google APIs und zum Zugriff auf Nutzerdaten verwendet werden.
  • Der Autorisierungscode ist ein temporärer Code, der von Google ausgestellt wird, um einzelne Nutzer, die sich über einen Browser in ihrem Google-Konto anmelden, sicher zu identifizieren. Ihre Backend-Plattform tauscht diesen Code gegen Zugriffs- und Aktualisierungstokens ein.
  • Ein Aktualisierungstoken ist ein von Google ausgestelltes, langlebiges Anmeldedatum pro Nutzer, das sicher auf Ihrer Plattform gespeichert wird und mit dem ein neues, gültiges Zugriffstoken abgerufen werden kann, auch wenn der Nutzer nicht anwesend ist.
  • Bereiche beschränken Tokens auf eine definierte und begrenzte Menge an Nutzerdaten. Weitere Informationen finden Sie unter OAuth 2.0-Bereiche für Google APIs.
  • Der Pop-up-Modus ist ein Autorisierungscode-Vorgang, der auf einem JavaScript-Callback basiert, der im Browser des Nutzers ausgeführt wird. Google ruft Ihren Callback-Handler auf, der dann dafür verantwortlich ist, den Autorisierungscode an Ihre Plattform zu senden. Wie das geschieht, liegt bei Ihnen.
  • Der Weiterleitungsmodus ist ein Autorisierungscode-Vorgang, der auf HTTP-Weiterleitungen basiert. Der User-Agent wird zuerst zu Google weitergeleitet. Eine zweite Weiterleitung von Google zum Autorisierungscode-Endpunkt Ihrer Plattform enthält den Code.

Die Gültigkeitsdauer von Tokens wird von Google als Aussteller festgelegt. Die genaue Dauer kann aufgrund verschiedener Faktoren variieren.

OAuth 2.0-Vorgänge

Es werden zwei Abläufe beschrieben: der implizite Ablauf und der Autorisierungscode-Ablauf. Beide geben ein Zugriffstoken zurück, das für die Verwendung mit Google APIs geeignet ist.

Der Autorisierungscode-Vorgang wird empfohlen, da er die Nutzersicherheit verbessert. Bei diesem Ablauf wird auch ein Aktualisierungstoken zurückgegeben, mit dem Zugriffstokens abgerufen werden können, ohne dass der Nutzer anwesend sein muss. So kann Ihre Plattform asynchrone Aktionen ausführen, z. B. eine SMS-Erinnerung an eine bevorstehende Besprechung senden, die in letzter Minute geplant wurde. Unter Autorisierungsmodell auswählen werden die Unterschiede zwischen den beiden Abläufen genauer erläutert.

Die Google Identity Services-JavaScript-Bibliothek folgt dem OAuth 2.0-Standard, um:

  • Verwalten Sie den impliziten Ablauf, damit Ihre Webanwendung im Browser schnell ein Zugriffstoken von Google abrufen kann, das zum Aufrufen von Google-APIs erforderlich ist.
  • Starten Sie den Autorisierungscode-Ablauf über den Browser des Nutzers.

Häufige Schritte

Sowohl der implizite als auch der Autorisierungscode-Vorgang beginnen auf dieselbe Weise:

  1. Ihre App fordert Zugriff auf einen oder mehrere Bereiche an.
  2. Google zeigt dem Nutzer einen Dialog zur Einholung von Einwilligungen an und meldet ihn bei Bedarf zuerst in seinem Google-Konto an.
  3. Der Nutzer genehmigt jeden angeforderten Bereich einzeln.

Jeder Ablauf endet dann mit unterschiedlichen Schritten.

Bei Verwendung des impliziten Ablaufs

  • Google verwendet einen Callback-Handler, um Ihre App über das Ergebnis der Einwilligung zu informieren und ein Zugriffstoken für alle genehmigten Bereiche zurückzugeben.

Verwendung des Autorisierungscode-Ablaufs

  • Google antwortet mit einem Autorisierungscode pro Nutzer:
    • Im Weiterleitungsmodus wird der Code an den Autorisierungscode-Endpunkt Ihrer Plattform zurückgegeben.
    • Im Dialogmodus wird der Code an den Callback-Handler Ihrer In-Browser-App zurückgegeben, ohne dass Nutzer Ihre Website verlassen müssen.
  • Ab Schritt 4: OAuth 2.0-Serverantwort verarbeiten führt Ihre Backend-Plattform einen Server-zu-Server-Austausch mit Google durch. Am Ende werden ein Aktualisierungstoken und ein Zugriffstoken pro Nutzer an Ihre Plattform zurückgegeben.

Bevor ein Zugriffstoken abgerufen werden kann, müssen einzelne Nutzer der App die Einwilligung zum Zugriff auf die angeforderten Bereiche erteilen. Dazu wird im zweiten Schritt ein Einwilligungsdialogfeld angezeigt und das Ergebnis wird unter myaccount.google.com/permissions gespeichert.

Der Name Ihrer App, Ihr Logo, Ihre Datenschutzerklärung, Ihre Nutzungsbedingungen und die angeforderten Bereiche werden dem Nutzer zusammen mit der Option angezeigt, die Anfrage zu genehmigen oder abzubrechen.

Abbildung 1 zeigt das Einwilligungsdialogfeld für einen einzelnen Bereich. Wenn nur ein Bereich angefordert wird, sind keine Kästchen zum Genehmigen oder Ablehnen eines Bereichs erforderlich.

Es wird ein Dialog zur Einholung von Einwilligungen des Nutzers mit den Schaltflächen „Abbrechen“ oder „Weiter“ und einem einzelnen Bereich ohne Kästchen angezeigt.

Abbildung 1:Dialog zur Einholung von Einwilligungen des Nutzers mit einem einzelnen Bereich.

Abbildung 2 zeigt den Dialog zur Einholung von Einwilligungen für mehrere Bereiche. Wenn mehrere Bereiche angefordert werden, sind separate Kästchen erforderlich, damit der Nutzer jeden Bereich genehmigen oder ablehnen kann.

Dialogfeld zur Einwilligung des Nutzers mit den Schaltflächen „Abbrechen“ oder „Weiter“ und mehreren Bereichen. Jeder Bereich hat ein Kontrollkästchen.

Abbildung 2:Dialog zur Einholung von Einwilligungen des Nutzers mit mehreren Bereichen.

Nutzerkonten

Für die Aufzeichnung der Einwilligung und die Ausstellung eines Zugriffstokens ist ein Google-Konto erforderlich. Zuvor müssen sich einzelne Nutzer bei Google authentifiziert haben, indem sie sich in einem Google-Konto angemeldet haben.

Die Anmeldung mit Google ist zwar keine Voraussetzung, wird aber für die Registrierung und Anmeldung bei Ihrer Web-App oder Backend-Plattform empfohlen. Dadurch wird die Nutzerfreundlichkeit verbessert, da die Anzahl der erforderlichen Schritte minimiert wird. Außerdem können Sie optional Zugriffstokens mit einzelnen Konten auf Ihrer Plattform verknüpfen.

Wenn Sie beispielsweise „Über Google anmelden“ verwenden, wird eine aktive Google-Konto-Sitzung eingerichtet. So müssen Sie den Nutzer später nicht mehr auffordern, sich in einem Google-Konto anzumelden, wenn Sie eine Autorisierungsanfrage stellen. Wenn Sie Nutzer auf andere Weise in Ihrer App authentifizieren, z. B. mit Nutzername und Passwort oder anderen Identitätsanbietern, müssen sie sich trotzdem zuerst mit einem Google-Konto anmelden, um die Einwilligung zu erteilen.

Wenn Sie bei der Autorisierungsinitialisierung einen Anmeldehinweis hinzufügen, in der Regel die E-Mail-Adresse des Google-Kontos des Nutzers, kann Google die Anzeige einer Kontoauswahl überspringen und den Nutzern einen Schritt ersparen. Das von „Über Google anmelden“ zurückgegebene ID-Token-Anmeldedaten enthält die E-Mail-Adresse des Nutzers.

Web-Apps, die nur im Browser ausgeführt werden, können sich ausschließlich auf Google für die Nutzerauthentifizierung verlassen und auf die Implementierung eines Nutzerkontoverwaltungssystems verzichten. In diesem Szenario, dem sogenannten impliziten Ablauf, ist es nicht erforderlich, ein Aktualisierungstoken mit einem Nutzerkonto und einem sicheren Speicher zu verknüpfen.

Alternativ ist ein Nutzerkontosystem für den Autorisierungscode-Ablauf erforderlich. Aktualisierungstokens pro Nutzer müssen mit einem individuellen Konto auf Ihrer Backend-Plattform verknüpft und für die spätere Verwendung gespeichert werden. Wie Sie ein Nutzerkontosystem implementieren, damit arbeiten und es verwalten, ist für Ihre Plattform einzigartig und wird nicht näher erläutert.

Nutzer können ihre Einwilligung jederzeit in den Einstellungen ihres Google-Kontos einsehen oder widerrufen.

Optional kann Ihre Web-App oder Plattform google.accounts.oauth2.revoke aufrufen, um Tokens zu widerrufen und die Nutzereinwilligung zu entfernen. Das ist nützlich, wenn ein Nutzer sein Konto auf Ihrer Plattform löscht.

Weitere Autorisierungsoptionen

Alternativ können Browser Zugriffstokens über den impliziten Ablauf abrufen, indem sie die OAuth 2.0-Endpunkte von Google direkt aufrufen, wie unter OAuth 2.0 für clientseitige Webanwendungen beschrieben.

Für den Autorisierungscode-Vorgang können Sie auch eigene Methoden implementieren und die Schritte unter OAuth 2.0 für Webserveranwendungen verwenden ausführen.

In beiden Fällen empfehlen wir dringend, die Google Identity Services-Bibliothek zu verwenden, um den Entwicklungsaufwand zu reduzieren und Sicherheitsrisiken wie die in OAuth 2.0 Security Best Current Practice beschriebenen zu minimieren.