Google-Kontoverknüpfung mit OAuth

Konten werden über die branchenüblichen impliziten und Autorisierungscode-Vorgänge für OAuth 2.0 verknüpft. Ihr Dienst muss OAuth 2.0-konforme Autorisierungs- und Token-Austauschendpunkte unterstützen.

Beim impliziten Ablauf öffnet Google Ihren Autorisierungsendpunkt im Browser des Nutzers. Nach der erfolgreichen Anmeldung geben Sie ein langlebiges Zugriffstoken an Google zurück. Dieses Zugriffstoken ist jetzt in jeder Anfrage enthalten, die von Google gesendet wird.

Für den Ablauf mit Autorisierungscode sind zwei Endpunkte erforderlich:

  • Den Autorisierungsendpunkt, der noch nicht angemeldeten Nutzern die Anmelde-UI anzeigt. Der Autorisierungsendpunkt erstellt auch einen kurzlebigen Autorisierungscode, um die Einwilligung der Nutzer in den angeforderten Zugriff zu erfassen.

  • Der Token-Austausch-Endpunkt, der für zwei Arten von Anzeigenplattformen verantwortlich ist:

    1. Hier wird ein Autorisierungscode gegen ein langlebiges Aktualisierungstoken und ein kurzlebiges Zugriffstoken eingetauscht. Dieser Austausch erfolgt, wenn der Nutzer die Kontoverknüpfung durchläuft.
    2. Ein langlebiges Aktualisierungstoken wird gegen ein kurzlebiges Zugriffstoken eingetauscht. Dieser Austausch erfolgt, wenn Google ein neues Zugriffstoken benötigt, weil das vorherige abgelaufen ist.

OAuth 2.0-Vorgang auswählen

Der implizite Ablauf ist zwar einfacher zu implementieren, Google empfiehlt jedoch, dass die über den impliziten Ablauf ausgestellten Zugriffstokens nie ablaufen. Das liegt daran, dass der Nutzer beim impliziten Ablauf gezwungen wird, sein Konto noch einmal zu verknüpfen, nachdem ein Token abgelaufen ist. Wenn Sie aus Sicherheitsgründen ein Ablaufdatum für Tokens benötigen, empfehlen wir Ihnen dringend, stattdessen den Ablaufvorgang für Autorisierungscodes zu verwenden.

Gestaltungsrichtlinien

In diesem Abschnitt werden die Designanforderungen und -empfehlungen für den Nutzerbildschirm beschrieben, den Sie für OAuth-Verknüpfungsvorgänge hosten. Nachdem die Funktion von der Google-App aufgerufen wurde, wird dem Nutzer auf Ihrer Plattform eine Seite zur Anmeldung bei Google und ein Bildschirm zur Einwilligung in die Kontoverknüpfung angezeigt. Nachdem der Nutzer seine Einwilligung zur Kontoverknüpfung gegeben hat, wird er zur Google-App zurückgeleitet.

Auf dieser Abbildung sind die Schritte zu sehen, die ein Nutzer ausführen muss, um sein Google-Konto mit Ihrem Authentifizierungssystem zu verknüpfen. Der erste Screenshot zeigt eine vom Nutzer initiierte Verknüpfung auf Ihrer Plattform. Das zweite Bild zeigt die Anmeldung des Nutzers bei Google. Auf dem dritten Bild ist die Einwilligung und Bestätigung des Nutzers zur Verknüpfung seines Google-Kontos mit Ihrer App zu sehen. Der letzte Screenshot zeigt ein erfolgreich verknüpftes Nutzerkonto in der Google App.
Abbildung 1. Kontoverknüpfung, Nutzeranmeldung bei Google und Einwilligungsbildschirme

Voraussetzungen

  1. Du musst angeben, dass das Konto des Nutzers mit Google verknüpft wird und nicht mit einem bestimmten Google-Produkt wie Google Home oder Google Assistant.

Empfehlungen

Wir empfehlen Folgendes:

  1. Datenschutzerklärung von Google anzeigen Fügen Sie im Zustimmungsbildschirm einen Link zur Datenschutzerklärung von Google ein.

  2. Zu teilende Daten: Informieren Sie die Nutzer in einer klaren und prägnanten Sprache darüber, welche Daten von ihnen Google benötigt und warum.

  3. Klarer Call-to-Action Geben Sie auf dem Einwilligungsbildschirm einen klaren Call-to-Action an, z. B. „Zustimmen und verknüpfen“. Nutzer müssen wissen, welche Daten sie mit Google teilen müssen, um ihre Konten zu verknüpfen.

  4. Kündigung möglich. Bieten Sie Nutzern die Möglichkeit, zurückzugehen oder abzubrechen, wenn sie die Verknüpfung nicht herstellen möchten.

  5. Klarer Anmeldevorgang. Achten Sie darauf, dass Nutzer eine eindeutige Methode für die Anmeldung in ihrem Google-Konto haben, z. B. Felder für ihren Nutzernamen und das Passwort oder Über Google anmelden.

  6. Möglichkeit, die Verknüpfung aufzuheben Bieten Sie Nutzern die Möglichkeit, die Verknüpfung aufzuheben, z. B. über eine URL zu ihren Kontoeinstellungen auf Ihrer Plattform. Alternativ können Sie einen Link zum Google-Konto einfügen, über den Nutzer ihr verknüpftes Konto verwalten können.

  7. Berechtigung zum Ändern des Nutzerkontos. Schlage Nutzern eine Methode vor, mit der sie ihr Konto bzw. ihre Konten wechseln können. Das ist besonders hilfreich, wenn Nutzer mehrere Konten haben.

    • Wenn ein Nutzer den Einwilligungsbildschirm schließen muss, um das Konto zu wechseln, senden Sie einen wiederherstellbaren Fehler an Google, damit sich der Nutzer mit der OAuth-Verknüpfung und dem impliziten Ablauf im gewünschten Konto anmelden kann.
  8. Fügen Sie Ihr Logo hinzu. Zeigen Sie Ihr Firmenlogo auf dem Einwilligungsbildschirm an. Verwenden Sie die Stilrichtlinien, um Ihr Logo zu platzieren. Wenn Sie auch das Google-Logo anzeigen lassen möchten, lesen Sie den Hilfeartikel Logos und Marken.

Projekt erstellen

So erstellen Sie ein Projekt, für das die Kontoverknüpfung verwendet werden soll:

  1. Go to the Google API Console.
  2. Klicken Sie auf Projekt erstellen .
  3. Geben Sie einen Namen ein oder akzeptieren Sie den generierten Vorschlag.
  4. Bestätigen oder bearbeiten Sie alle verbleibenden Felder.
  5. Klicken Sie auf Erstellen .

So zeigen Sie Ihre Projekt-ID an:

  1. Go to the Google API Console.
  2. Finden Sie Ihr Projekt in der Tabelle auf der Zielseite. Die Projekt - ID wird in der ID - Spalte.

Der Vorgang zur Google-Kontoverknüpfung umfasst einen Einwilligungsbildschirm, auf dem Nutzer die Anwendung sehen, die Zugriff auf ihre Daten anfordert, welche Art von Daten angefordert werden und welche Nutzungsbedingungen gelten. Sie müssen den OAuth-Zustimmungsbildschirm konfigurieren, bevor Sie eine Google API-Client-ID generieren können.

  1. Öffnen Sie in der Google APIs Console die Seite OAuth-Zustimmungsbildschirm.
  2. Wählen Sie bei Aufforderung das Projekt aus, das Sie gerade erstellt haben.
  3. Füllen Sie auf der Seite "OAuth-Zustimmungsbildschirm" das Formular aus und klicken Sie auf die Schaltfläche "Speichern".

    Name der Anwendung:Der Name der Anwendung, für die die Einwilligung eingeholt werden soll. Der Name sollte Ihre Anwendung korrekt widerspiegeln und mit dem Namen der Anwendung übereinstimmen, der Nutzern an anderer Stelle angezeigt wird. Der Name der Anwendung wird auf dem Einwilligungsbildschirm für die Kontoverknüpfung angezeigt.

    App-Logo:Ein Bild auf dem Zustimmungsbildschirm, anhand dessen Nutzer Ihre App erkennen können. Das Logo ist auf dem Zustimmungsbildschirm für die Kontoverknüpfung und in den Kontoeinstellungen zu sehen.

    Support-E-Mail-Adresse:E-Mail-Adresse des Supports, mit der Nutzer Sie mit Fragen zu ihrer Einwilligung kontaktieren können.

    Bereiche für Google APIs:Bereiche ermöglichen es Ihrer Anwendung, auf die privaten Google-Daten Ihrer Nutzer zuzugreifen. Für den Anwendungsfall der Google-Kontoverknüpfung reicht der Standardumfang (E-Mail, Profil, OpenID) aus. Sie müssen keine sensiblen Bereiche hinzufügen. Es wird empfohlen, Zugriffsbereiche schrittweise anzufordern, wenn der Zugriff erforderlich ist, und nicht im Voraus. Weitere Informationen

    Autorisierte Domains:Um Sie und Ihre Nutzer zu schützen, erlaubt Google die Nutzung autorisierter Domains nur solchen Anwendungen, die OAuth verwenden. Die Links Ihrer Apps müssen auf autorisierten Domains gehostet werden. Weitere Informationen

    Link zur Startseite der Anwendung:Startseite Ihrer Anwendung. Muss auf einer autorisierten Domain gehostet werden.

    Link zur Datenschutzerklärung der Anwendung:Wird auf dem Bildschirm für die Einwilligung in die Google-Kontoverknüpfung angezeigt. Muss auf einer autorisierten Domain gehostet werden.

    Link zu den Nutzungsbedingungen der Anwendung (optional): Muss auf einer autorisierten Domain gehostet werden.

    Abbildung 1. Zustimmungsbildschirm für die Google-Kontoverknüpfung für eine fiktive Anwendung, Tunery

  4. Prüfen Sie den Bestätigungsstatus. Falls Ihr Antrag überprüft werden muss, klicken Sie auf die Schaltfläche „Zur Überprüfung einreichen“, um Ihren Antrag zur Überprüfung einzureichen. Weitere Informationen finden Sie unter Anforderungen an die OAuth-Überprüfung.

OAuth-Server implementieren

To support the OAuth 2.0 implicit flow, your service makes an authorization endpoint available by HTTPS. This endpoint is responsible for authentication and obtaining consent from users for data access. The authorization endpoint presents a sign-in UI to your users that aren't already signed in and records consent to the requested access.

When a Google application needs to call one of your service's authorized APIs, Google uses this endpoint to get permission from your users to call these APIs on their behalf.

A typical OAuth 2.0 implicit flow session initiated by Google has the following flow:

  1. Google opens your authorization endpoint in the user's browser. The user signs in, if not signed in already, and grants Google permission to access their data with your API, if they haven't already granted permission.
  2. Your service creates an access token and returns it to Google. To do so, redirect the user's browser back to Google with the access token attached to the request.
  3. Google calls your service's APIs and attaches the access token with each request. Your service verifies that the access token grants Google authorization to access the API and then completes the API call.

Handle authorization requests

When a Google application needs to perform account linking via an OAuth 2.0 implicit flow, Google sends the user to your authorization endpoint with a request that includes the following parameters:

Authorization endpoint parameters
client_id The client ID you assigned to Google.
redirect_uri The URL to which you send the response to this request.
state A bookkeeping value that is passed back to Google unchanged in the redirect URI.
response_type The type of value to return in the response. For the OAuth 2.0 implicit flow, the response type is always token.
user_locale The Google Account language setting in RFC5646 format used to localize your content in the user's preferred language.

For example, if your authorization endpoint is available at https://myservice.example.com/auth, a request might look like the following:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE

For your authorization endpoint to handle sign-in requests, do the following steps:

  1. Verify the client_id and redirect_uri values to prevent granting access to unintended or misconfigured client apps:

    • Confirm that the client_id matches the client ID you assigned to Google.
    • Confirm that the URL specified by the redirect_uri parameter has the following form:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. Check if the user is signed in to your service. If the user isn't signed in, complete your service's sign-in or sign-up flow.

  3. Generate an access token for Google to use to access your API. The access token can be any string value, but it must uniquely represent the user and the client the token is for and must not be guessable.

  4. Send an HTTP response that redirects the user's browser to the URL specified by the redirect_uri parameter. Include all of the following parameters in the URL fragment:

    • access_token: The access token you just generated
    • token_type: The string bearer
    • state: The unmodified state value from the original request

    The following is an example of the resulting URL:

    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Google's OAuth 2.0 redirect handler receives the access token and confirms that the state value hasn't changed. After Google has obtained an access token for your service, Google attaches the token to subsequent calls to your service APIs.

Handle userinfo requests

The userinfo endpoint is an OAuth 2.0 protected resource that return claims about the linked user. Implementing and hosting the userinfo endpoint is optional, except for the following use cases:

After the access token has been successfully retrieved from your token endpoint, Google sends a request to your userinfo endpoint to retrieve basic profile information about the linked user.

userinfo endpoint request headers
Authorization header The access token of type Bearer.

For example, if your userinfo endpoint is available at https://myservice.example.com/userinfo, a request might look like the following:

GET /userinfo HTTP/1.1
Host: myservice.example.com
Authorization: Bearer ACCESS_TOKEN

For your userinfo endpoint to handle requests, do the following steps:

  1. Extract access token from the Authorization header and return information for the user associated with the access token.
  2. If the access token is invalid, return an HTTP 401 Unauthorized error with using the WWW-Authenticate Response Header. Below is an example of a userinfo error response:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    If a 401 Unauthorized, or any other unsuccessful error response is returned during the linking process, the error will be non-recoverable, the retrieved token will be discarded and the user will have to initiate the linking process again.
  3. If the access token is valid, return and HTTP 200 response with the following JSON object in the body of the HTTPS response:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    
    If your userinfo endpoint returns an HTTP 200 success response, the retrieved token and claims are registered against the user's Google account.

    userinfo endpoint response
    sub A unique ID that identifies the user in your system.
    email Email address of the user.
    given_name Optional: First name of the user.
    family_name Optional: Last name of the user.
    name Optional: Full name of the user.
    picture Optional: Profile picture of the user.

Implementierung validieren

Sie können Ihre Implementierung mit dem Tool OAuth 2.0 Playground validieren.

Führen Sie im Tool die folgenden Schritte aus:

  1. Klicken Sie auf Konfiguration , um das Fenster für die OAuth 2.0-Konfiguration zu öffnen.
  2. Wählen Sie im Feld OAuth-Ablauf die Option Clientseitig aus.
  3. Wählen Sie im Feld OAuth-Endpunkte die Option Benutzerdefiniert aus.
  4. Geben Sie in den entsprechenden Feldern Ihren OAuth 2.0-Endpunkt und die Client-ID an, die Sie Google zugewiesen haben.
  5. Wählen Sie im Abschnitt Schritt 1 keine Google-Bereiche aus. Lassen Sie dieses Feld stattdessen leer oder geben Sie einen für Ihren Server gültigen Bereich ein (oder einen beliebigen String, wenn Sie keine OAuth-Bereiche verwenden). Wenn Sie fertig sind, klicken Sie auf APIs autorisieren.
  6. Führen Sie in den Abschnitten Schritt 2 und Schritt 3 den OAuth 2.0-Ablauf durch und prüfen Sie, ob jeder Schritt wie vorgesehen funktioniert.

Sie können Ihre Implementierung mit der Demo zur Google-Kontoverknüpfung prüfen.

Führen Sie im Tool die folgenden Schritte aus:

  1. Klicken Sie auf die Schaltfläche Über Google anmelden.
  2. Wählen Sie das Konto aus, das Sie verknüpfen möchten.
  3. Geben Sie die Service-ID ein.
  4. Optional können Sie einen oder mehrere Bereiche angeben, für die Sie Zugriff anfordern möchten.
  5. Klicken Sie auf Demo starten.
  6. Bestätigen Sie bei Aufforderung, dass Sie der Verknüpfungsanfrage zustimmen oder sie ablehnen können.
  7. Prüfen Sie, ob Sie zu Ihrer Plattform weitergeleitet werden.