Funktionsweise der Nutzerautorisierung

Wenn Sie mit Google Identity Services oder der Autorisierung nicht vertraut sind, sollten Sie zuerst die Übersicht lesen.

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

Reine Authentifizierungsbereiche

Einige Bereiche werden nur für die Nutzerauthentifizierung verwendet: email, profile und openid. Wenn Ihre Anwendung nur diese Bereiche verwendet, prüfen Sie, ob ein JWT-ID-Token und Über Google anmelden für die Nutzerregistrierung und -anmeldung Ihren Anforderungen entsprechen. In den meisten Fällen ist dies die einfachste und einfachste Methode, die zur Nutzerauthentifizierung verfügbar ist.

Wichtige Begriffe und Konzepte

In diesen Leitfäden wird davon ausgegangen, dass Sie grundlegende Kenntnisse über OAuth 2.0-Konzepte und IETF-Standards wie RFC6749 haben. Die folgenden Begriffe werden in allen Autorisierungsleitfäden verwendet:

  • Ein Zugriffstoken ist eine von Google kurzlebige Anmeldedaten pro Nutzer, die für den sicheren Aufruf von Google APIs und den Zugriff auf Nutzerdaten verwendet werden.
  • Der Autorisierungscode ist ein temporärer Code, der von Google ausgegeben wird, um einzelne Nutzer sicher zu identifizieren, die sich über einen Browser in ihrem Google-Konto anmelden. Ihre Back-End-Plattform tauscht diesen Code gegen Zugriffs- und Aktualisierungstokens aus.
  • Das Aktualisierungstoken ist ein von Google festgelegtes und langlebiges Ausweisdokument. Es wird sicher auf Ihrer Plattform gespeichert und kann verwendet werden, um auch dann ein neues, gültiges Zugriffstoken abzurufen, wenn der Nutzer nicht anwesend ist.
  • Der Bereich beschränkt 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 Vorgang mit Autorisierungscode, der auf einem JavaScript-Callback basiert, der im Browser des Nutzers ausgeführt wird. Google ruft Ihren Callback-Handler auf, der dann dafür zuständig ist, den Authentifizierungscode an Ihre Plattform zu senden. Wie Sie dazu vorgehen, bleibt Ihnen überlassen.
  • Der Weiterleitungsmodus ist ein Ablauf mit Autorisierungscode, der auf HTTP-Weiterleitungen basiert. Der User-Agent wird zuerst zu Google weitergeleitet. Eine zweite Weiterleitung von Google zum Autorisierungscodeendpunkt Ihrer Plattform enthält den Code.

Die Lebensdauer von Tokens wird von Google als Aussteller festgelegt. Aufgrund verschiedener Faktoren kann die genaue Dauer variieren.

OAuth 2.0-Abläufe

Es werden zwei Abläufe, der implizite und der Autorisierungscode, erläutert. Beide geben ein Zugriffstoken zurück, das zur Verwendung mit Google APIs geeignet ist.

Der Vorgang mit Autorisierungscode wird empfohlen, da er die Nutzersicherheit erhöht. Bei diesem Ablauf wird auch ein Aktualisierungstoken zurückgegeben, mit dem Zugriffstokens abgerufen werden können, ohne dass der Nutzer anwesend ist. So kann Ihre Plattform leichter asynchrone Aktionen ausführen, z. B. das Senden einer SMS-Erinnerung an eine anstehende Besprechung, die in der letzten Minute geplant wurde. Im Artikel Autorisierungsmodell auswählen werden die Unterschiede zwischen den beiden Abläufen ausführlicher erläutert.

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

  • den impliziten Ablauf verwalten, damit die browserinterne Webanwendung schnell und einfach ein Zugriffstoken von Google abrufen kann, das zum Aufrufen von Google APIs erforderlich ist.
  • Den Vorgang für den Autorisierungscode im Browser des Nutzers starten

Häufige Schritte

Der implizite Vorgang und der Vorgang mit Autorisierungscode beginnen auf die gleiche Weise:

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

Jeder Ablauf wird dann mit anderen Schritten abgeschlossen.

Bei Verwendung des impliziten Ablaufs

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

Bei Verwendung des Vorgangs mit Autorisierungscode

  • Google antwortet mit einem Autorisierungscode pro Nutzer:
    • Im Weiterleitungsmodus wird der Code an den Autorisierungscode-Endpunkt Ihrer Plattform zurückgegeben.
    • Im Pop-up-Modus wird der Code an den Callback-Handler der Browseranwendung zurückgegeben, ohne dass Nutzer Ihre Website verlassen müssen.
  • Ab Schritt 4: OAuth 2.0-Serverantwort verarbeiten führt Ihre Back-End-Plattform einen Server-zu-Server-Austausch mit Google durch. Das führt dazu, dass ein Aktualisierungs- und ein Zugriffstoken pro Nutzer an Ihre Plattform zurückgegeben werden.

Bevor ein Zugriffstoken abgerufen wird, müssen einzelne Nutzer die Einwilligung Ihrer Anwendung für den Zugriff auf die angeforderten Bereiche erteilen. Dazu zeigt Google in Schritt 2 oben einen Dialog zur Einholung von Einwilligungen an und speichert das Ergebnis unter myaccount.google.com/permissions.

Dem Nutzer werden der Name der Anwendung, das Logo, die Datenschutzerklärung, die Nutzungsbedingungen und die angeforderten Bereiche angezeigt. Außerdem hat er die Möglichkeit, die Anfrage zu genehmigen oder abzubrechen.

In Abbildung 1 ist der Dialog zur Einholung von Einwilligungen für einen einzelnen Bereich zu sehen. Wenn ein einzelner Bereich angefordert wird, sind keine Kästchen erforderlich, um einen Bereich zu genehmigen oder abzulehnen.

Dialogfeld zur Nutzereinwilligung mit den Schaltflächen „Abbrechen“ oder „Weiter“ und einem einzelnen Bereich, es werden keine Kästchen angezeigt.

Abbildung 1:Dialogfeld zur Nutzereinwilligung mit einem einzelnen Umfang.

In Abbildung 2 ist der Dialog zur Einholung von Einwilligungen für mehrere Bereiche zu sehen. Wenn mehr als ein Bereich angefordert wird, sind einzelne Kästchen erforderlich, damit der Nutzer jeden Bereich genehmigen oder ablehnen kann.

Dialogfeld für die Nutzereinwilligung mit den Schaltflächen „Abbrechen“ oder „Weiter“ und mehreren Bereichen. Jeder Bereich hat eine Kästchenauswahl.

Abbildung 2:Dialogfeld zur Nutzereinwilligung mit mehreren Bereichen

Nutzerkonten

Ein Google-Konto ist erforderlich, um die Einwilligung aufzuzeichnen und ein Zugriffstoken auszustellen. Zuvor müssen sich einzelne Nutzer bei Google authentifizieren, indem sie sich bei einem Google-Konto angemeldet haben.

Wir empfehlen, „Über Google anmelden“ für die Registrierung und Anmeldung in Ihrer Web-App oder Ihrer Back-End-Plattform zu verwenden. Dies ist jedoch nicht unbedingt erforderlich. So lassen sich Beeinträchtigungen der Nutzer vermeiden, da weniger Schritte erforderlich sind. Optional können Sie Zugriffstokens auf einfache Weise mit einzelnen Konten auf Ihrer Plattform verknüpfen.

Wenn Sie beispielsweise „Über Google anmelden“ verwenden, wird eine aktive Google-Kontositzung eingerichtet. So muss der Nutzer später nicht aufgefordert werden, sich bei einem Google-Konto anzumelden, wenn eine Autorisierungsanfrage gestellt wird. Wenn Sie Nutzer auf andere Weise, z. B. über einen Nutzernamen und ein Passwort oder über andere Identitätsanbieter, für Ihre Anwendung authentifizieren, müssen sie sich dennoch zuerst in einem Google-Konto anmelden, um ihre Einwilligung zu erhalten.

Durch das Hinzufügen eines Anmeldehinweiss während der Autorisierungsinitialisierung – in der Regel die E-Mail-Adresse des Google-Kontos des Nutzers – kann Google die Anzeige der Kontoauswahl überspringen und dem Nutzer einen Schritt sparen. Die von „Über Google anmelden“ zurückgegebenen Anmeldedaten für das ID-Token enthalten die E-Mail-Adresse des Nutzers.

Webanwendungen, die nur im Browser ausgeführt werden, dürfen sich zur Nutzerauthentifizierung ausschließlich auf Google verlassen, ohne ein Nutzerkontenverwaltungssystem zu implementieren. In diesem Szenario, das als impliziter Ablauf bezeichnet wird, ist es nicht erforderlich, ein Aktualisierungstoken mit einem Nutzerkonto und einem sicheren Speicher für die Verwaltung zu verknüpfen.

Alternativ ist für den Vorgang mit Autorisierungscode ein Nutzerkontosystem erforderlich. Aktualisierungstokens pro Nutzer müssen mit einem einzelnen Konto auf Ihrer Back-End-Plattform verknüpft und zur späteren Verwendung gespeichert werden. Wie Sie ein Nutzerkontosystem implementieren, verwenden und verwalten, hängt ganz von Ihrer Plattform ab und wird nicht im Detail behandelt.

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

Optional kann Ihre Webanwendung oder Plattform google.accounts.oauth2.revoke aufrufen, um Tokens zu widerrufen und die Nutzereinwilligung zu entfernen. Das ist hilfreich, wenn ein Nutzer sein Konto von der Plattform löscht.

Weitere Autorisierungsoptionen

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

Ebenso können Sie für den Autorisierungscode-Vorgang Ihre eigenen Methoden implementieren und den Schritten unter OAuth 2.0 für Webserveranwendungen verwenden folgen.

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