Google-Kontoverknüpfung mit OAuth

Die Konten werden mithilfe von In-App-Käufen über den impliziten und Standard-Autorisierungscode von OAuth 2.0 verknüpft. Der Dienst muss die OAuth 2.0-konformen Endpunkte für die Autorisierung und den Tokenaustausch unterstützen.

Im 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 von Google gesendeten Anfrage enthalten.

Im Ablauf des Autorisierungscodes benötigen Sie zwei Endpunkte:

  • Der Autorisierungsendpunkt, der Nutzern die Anmelde-UI zeigt, die noch nicht angemeldet sind. Der Autorisierungsendpunkt erstellt außerdem einen kurzlebigen Autorisierungscode, um Nutzer aufzuzeichnen und in den angeforderten Zugriff einzuwilligen.

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

    1. Autorisierungscode für ein langlebiges Aktualisierungstoken und ein kurzlebiges Zugriffstoken austauschen. Der Austausch erfolgt, wenn der Nutzer die Kontoverknüpfung durchläuft.
    2. Ein langlebiges Aktualisierungstoken wird gegen ein kurzlebiges Zugriffstoken ausgetauscht. Dieser Austausch erfolgt, wenn Google ein neues Zugriffstoken benötigt, weil es abgelaufen ist.

OAuth 2.0-Vorgang auswählen

Obwohl der implizite Vorgang einfacher zu implementieren ist, empfiehlt Google, dass die vom impliziten Vorgang ausgegebenen Zugriffstokens nie ablaufen. Der Nutzer muss dann sein Konto wieder verknüpfen, nachdem ein Token mit dem impliziten Vorgang abgelaufen ist. Wenn Sie aus Sicherheitsgründen ein Token ablaufen müssen, empfehlen wir dringend, stattdessen den Autorisierungscode zu verwenden.

Gestaltungsrichtlinien

In diesem Abschnitt werden die Designanforderungen und Empfehlungen für den Bildschirm des Nutzers beschrieben, den Sie für OAuth-Verknüpfungsabläufe hosten. Nachdem die App von Google aufgerufen wurde, wird auf deiner Plattform eine Anmeldung auf der Google-Seite und ein Bildschirm für die Einwilligung zur Kontoverknüpfung angezeigt. Nachdem der Nutzer seine Einwilligung zur Verknüpfung von Konten erteilt hat, wird er zur App von Google zurückgeleitet.

In dieser Abbildung werden die Schritte dargestellt, mit denen Nutzer ihr Google-Konto mit ihrem Authentifizierungssystem verknüpfen können. Der erste Screenshot zeigt die vom Nutzer initiierte Verknüpfung von deiner Plattform. Das zweite Bild zeigt die Anmeldung des Nutzers in Google, während auf dem dritten die Einwilligung und die Bestätigung des Nutzers für die Verknüpfung seines Google-Kontos mit der App zu sehen ist. Im letzten Screenshot wird ein erfolgreich verknüpftes Nutzerkonto in der Google App angezeigt.
Abbildung 1: Kontoverknüpfung zur Anmeldung in Google und Zustimmungsbildschirme.

Voraussetzungen

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

Empfehlungen

Wir empfehlen Folgendes:

  1. Datenschutzerklärung von Google anzeigen Geben Sie auf dem Zustimmungsbildschirm einen Link zur Datenschutzerklärung von Google an.

  2. Zu teilende Daten. Verwenden Sie eine klare und präzise Formulierung, um dem Nutzer mitzuteilen, welche Daten er benötigt und warum.

  3. Klarer Call-to-Action Geben Sie auf dem Zustimmungsbildschirm einen klaren Call-to-Action wie „Zustimmen und verknüpfen“ an. Der Nutzer muss verstehen, welche Daten zur Freigabe des Kontos an Google weitergegeben werden müssen.

  4. Stornierung möglich. Nutzer können zurückgehen oder den Vorgang abbrechen, wenn sie sich gegen das Verknüpfen entscheiden.

  5. Anmeldevorgang löschen. Achte darauf, dass Nutzer eine klare Methode für die Anmeldung in ihrem Google-Konto haben, z. B. Felder für ihren Nutzernamen und ihr Passwort oder Über Google anmelden.

  6. Verknüpfung aufheben: Nutzern einen Mechanismus zur Aufhebung der Verknüpfung anbieten, z. B. eine URL zu ihren Kontoeinstellungen auf deiner Plattform. Alternativ kannst du einen Link zu Google-Konto einfügen, über den die Nutzer ihr verknüpftes Konto verwalten können.

  7. Änderung des Nutzerkontos: Schlagen Sie eine Methode vor, mit der Nutzer ihr Konto oder ihre Konten wechseln können. Dies ist insbesondere dann hilfreich, wenn Nutzer normalerweise mehrere Konten haben.

    • Wenn ein Nutzer den Zustimmungsbildschirm schließen muss, um das Konto zu wechseln, sendet einen Fehler, der behoben werden kann, an Google, damit er sich über OAuth-Verknüpfung und den impliziten Vorgang im gewünschten Konto anmelden kann.
  8. Fügen Sie Ihr Logo ein. Anzeigen Ihres Unternehmenslogos auf dem Zustimmungsbildschirm. Platzieren Sie Ihr Logo anhand Ihrer Stilrichtlinien. Informationen zur Darstellung des Google-Logos findest du unter Logos und Marken.

Projekt erstellen

So erstellen Sie Ihr Projekt für die Kontoverknüpfung:

  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.

Die Google-Kontoverknüpfung umfasst einen Zustimmungsbildschirm, auf dem Nutzer über die App informiert werden, die Zugriff auf ihre Daten anfordert, welche Art von Daten sie anfordern und welche Nutzungsbedingungen gelten. Sie müssen den OAuth-Zustimmungsbildschirm konfigurieren, bevor Sie eine Google API-Client-ID generieren.

  1. Öffnen Sie die Seite OAuth-Zustimmungsbildschirm der Google APIs-Konsole.
  2. Wenn Sie dazu aufgefordert werden, wählen Sie das soeben erstellte Projekt aus.
  3. Füllen Sie auf der Seite „OAuth-Zustimmungsbildschirm“ das Formular aus und klicken Sie auf die Schaltfläche „Speichern“.

    Name der App:Der Name der App, die um Ihre Einwilligung gebeten wird. Der Name sollte genau zu Ihrer App passen und mit dem App-Namen übereinstimmen, den Nutzer an anderer Stelle sehen. Der Name der App wird auf dem Zustimmungsbildschirm für die Kontoverknüpfung angezeigt.

    App-Logo:Ein Bild auf dem Zustimmungsbildschirm, anhand dessen Nutzer Ihre App erkennen. Das Logo wird auf dem Zustimmungsbildschirm für die Kontoverknüpfung und in den Kontoeinstellungen angezeigt.

    Support-E-Mail-Adresse:Diese E-Mail-Adresse richtet sich an Nutzer, die Fragen zu ihrer Einwilligung haben.

    Bereiche für Google APIs:Mit Bereichen kann Ihre Anwendung auf die privaten Google-Daten Ihrer Nutzer zugreifen. Für den Anwendungsfall „Google-Kontoverknüpfung“ ist der Standardbereich (E-Mail-Adresse, Profil, OpenID) ausreichend. Sie müssen keine vertraulichen Bereiche hinzufügen. Im Allgemeinen empfiehlt es sich, Bereiche inkrementell anzufordern, und zwar dann, wenn Zugriff erforderlich ist, und nicht im Voraus. Weitere Informationen

    Autorisierte Domains:Google lässt zu Ihrem Schutz und Ihrer Nutzer nur Anwendungen zu, die sich über OAuth authentifizieren, um autorisierte Domains zu verwenden. Die Links Ihrer Anwendungen müssen in autorisierten Domains gehostet werden. Weitere Informationen

    Link zur Startseite der App:Startseite Ihrer App. Muss in einer autorisierten Domain gehostet werden.

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

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

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

  4. Klicken Sie unter „Bestätigungsstatus“ auf „Bestätigungsstatus“. Wenn Ihr Antrag überprüft werden muss, klicken Sie auf die Schaltfläche „Zur Überprüfung einreichen“. Weitere Informationen finden Sie unter Anforderungen für die OAuth-Bestätigung.

OAuth-Server implementieren

Um den OAuth 2.0 impliziten Fluss zu unterstützen, Ihr Dienst macht einen Berechtigungs Endpunkt verfügbar von HTTPS. Dieser Endpunkt ist für die Authentifizierung und das Einholen der Zustimmung der Benutzer für den Datenzugriff verantwortlich. Der Autorisierungsendpunkt stellt Ihren Benutzern, die noch nicht angemeldet sind, eine Benutzeroberfläche zur Anmeldung bereit und zeichnet die Zustimmung zum angeforderten Zugriff auf.

Wenn eine Google-Anwendung eine der autorisierten APIs Ihres Dienstes aufrufen muss, verwendet Google diesen Endpunkt, um von Ihren Nutzern die Erlaubnis einzuholen, diese APIs in ihrem Namen aufzurufen.

Eine typische von Google initiierte implizite OAuth 2.0-Flow-Sitzung hat den folgenden Ablauf:

  1. Google öffnet Ihren Autorisierungsendpunkt im Browser des Nutzers. Der Nutzer meldet sich an, falls er noch nicht angemeldet ist, und erteilt Google die Berechtigung, mit Ihrer API auf seine Daten zuzugreifen, sofern er noch keine Berechtigung erteilt hat.
  2. Ihr Dienst erstellt ein Zugriffstoken und gibt sie an Google. Leiten Sie dazu den Browser des Nutzers mit dem an die Anfrage angehängten Zugriffstoken zurück zu Google.
  3. Google ruft die APIs Ihres Dienstes auf und hängt das Zugriffstoken an jede Anfrage an. Ihr Dienst überprüft, ob das Zugriffstoken Google die Autorisierung für den Zugriff auf die API gewährt, und schließt dann den API-Aufruf ab.

Autorisierungsanfragen bearbeiten

Wenn eine Google-Anwendung eine Kontoverknüpfung über einen impliziten OAuth 2.0-Flow durchführen muss, sendet Google den Nutzer mit einer Anfrage, die die folgenden Parameter enthält, an Ihren Autorisierungsendpunkt:

Autorisierungsendpunktparameter
client_id Die Client-ID, die Sie Google zugewiesen haben.
redirect_uri Die URL, an die Sie die Antwort auf diese Anfrage senden.
state Ein Buchhaltungswert, der unverändert im Weiterleitungs-URI an Google zurückgegeben wird.
response_type Der Typ des Werts, der in der Antwort zurückgegeben werden soll. Für die OAuth 2.0 implizite Strömung wird der Antworttyp immer token .
user_locale Die Google - Konto Spracheinstellung in RFC5646 - Format verwendet , um Ihre Inhalte in dem vom Benutzer bevorzugten Sprache zu lokalisieren.

Zum Beispiel, wenn Ihre Berechtigung Endpunkt an verfügbar ist https://myservice.example.com/auth könnte eine Anfrage wie folgt aussehen:

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

Führen Sie die folgenden Schritte aus, damit Ihr Autorisierungsendpunkt Anmeldeanforderungen verarbeiten kann:

  1. Überprüfen Sie die client_id und redirect_uri Werte Zugriff zu verhindern Gewährung unbeabsichtigte oder falsch konfigurierte Client - Anwendungen:

    • Bestätigen Sie, dass der client_id entspricht die Client - ID an Google zugewiesen.
    • Bestätigen , dass die URL von dem angegebenen redirect_uri Parameter hat die folgende Form:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. Überprüfen Sie, ob der Benutzer bei Ihrem Dienst angemeldet ist. Wenn der Benutzer nicht angemeldet ist, führen Sie den Anmelde- oder Anmeldevorgang Ihres Dienstes durch.

  3. Generieren Sie ein Zugriffstoken, mit dem Google auf Ihre API zugreifen kann. Das Zugriffstoken kann ein beliebiger Zeichenfolgenwert sein, muss jedoch den Benutzer und den Client, für den das Token bestimmt ist, eindeutig darstellen und darf nicht erraten werden.

  4. Senden Sie eine HTTP - Antwort , die den Browser des Benutzers an die URL von der angegebenen Umleitungen redirect_uri Parameter. Fügen Sie alle der folgenden Parameter in das URL-Fragment ein:

    • access_token : Das Zugriffstoken Sie gerade erzeugt
    • token_type : Der String bearer
    • state : Der unmodifizierte Zustandswert aus der ursprünglichen Anforderung

    Das Folgende ist ein Beispiel der resultierenden URL:

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

Google OAuth 2.0 Redirect Handler empfängt das Zugriffstoken und bestätigt , dass der state Wert nicht verändert hat. Nachdem Google ein Zugriffstoken für Ihren Dienst erhalten hat, hängt Google das Token an nachfolgende Aufrufe Ihrer Dienst-APIs an.

Benutzerinfo-Anfragen bearbeiten

Der Userinfo - Endpunkt ist eine OAuth 2.0 geschützte Ressource , die Rückkehr Anspruch über den verknüpften Benutzer. Das Implementieren und Hosten des userinfo-Endpunkts ist optional, mit Ausnahme der folgenden Anwendungsfälle:

Nachdem das Zugriffstoken erfolgreich von Ihrem Token-Endpunkt abgerufen wurde, sendet Google eine Anfrage an Ihren userinfo-Endpunkt, um grundlegende Profilinformationen über den verknüpften Nutzer abzurufen.

Userinfo-Endpunkt-Anforderungsheader
Authorization header Das Zugriffstoken vom Typ Bearer.

Zum Beispiel, wenn Ihr Userinfo Endpunkt bei verfügbar ist https://myservice.example.com/userinfo könnte eine Anfrage wie folgt aussehen:

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

Führen Sie die folgenden Schritte aus, damit Ihr userinfo-Endpunkt Anfragen verarbeiten kann:

  1. Extrahieren Sie das Zugriffstoken aus dem Authorization-Header und geben Sie Informationen für den Benutzer zurück, der dem Zugriffstoken zugeordnet ist.
  2. Wenn der Zugriffstoken ungültig ist, der HTTP 401 Unauthorized Fehler bei der Verwendung von WWW-Authenticate Response - Header. Im Folgenden finden Sie ein Beispiel für eine userinfo Fehlerreaktion:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    Wenn ein 401 Unauthorized oder jede andere erfolglose Fehlerreaktion während des Verbindungsvorgangs zurückgeführt wird, wird der Fehler nicht mehr erzielbar ist, wird die abgerufene Token verworfen werden und der Benutzer wird um den Verknüpfungsvorgang erneut zu starten.
  3. Wenn die Zugriffstoken gültig ist, Rückkehr und HTTP 200 - Antwort mit dem folgende JSON - Objekt in dem Körper der HTTPS - Antwort:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    
    Wenn Ihr Userinfo Endpunkt kehrt eine HTTP 200 Erfolgsantwort, werden die abgerufenen Token und Ansprüche registriert gegen den Benutzer Google Konto.

    Userinfo-Endpunktantwort
    sub Eine eindeutige ID, die den Benutzer in Ihrem System identifiziert.
    email E-Mail-Adresse des Benutzers.
    given_name Optional: Vorname des Benutzers.
    family_name Optional: Nachname des Benutzers.
    name Optional: Vollständiger Name des Benutzers.
    picture Optional: Profilbild des Nutzers.

Implementierung validieren

Sie können Ihre Implementierung mithilfe der Validierung OAuth 2.0 Spielplatz - Tool.

Führen Sie im Tool die folgenden Schritte aus:

  1. Klicken Sie auf das OAuth 2.0 - Konfigurationsfenster zu öffnen.
  2. Im OAuth Strömungsfeld, wählen Sie Client-Seite.
  3. Im OAuth Endpunkte Feld wählen Sie Benutzerdefiniert.
  4. Geben Sie Ihren OAuth 2.0-Endpunkt und die Client-ID, die Sie Google zugewiesen haben, in die entsprechenden Felder ein.
  5. Im Schritt 1 Wählen Sie im Abschnitt keine Google Bereiche. Lassen Sie stattdessen dieses Feld leer oder geben Sie einen für Ihren Server gültigen Bereich ein (oder eine beliebige Zeichenfolge, wenn Sie keine OAuth-Bereiche verwenden). Wenn Sie fertig sind, klicken Sie auf Autorisieren APIs.
  6. In der Stufe 2 und Stufe 3 Abschnitte, geht durch die OAuth 2.0 fließen und sicherzustellen , dass jeder Schritt wie vorgesehen funktioniert.

Sie können Ihre Implementierung mithilfe der Validierung Google - Konto verknüpfen Demo - Tool.

Führen Sie im Tool die folgenden Schritte aus:

  1. Klicken Sie auf die Sign-in mit Google - Taste.
  2. Wählen Sie das Konto aus, das Sie verknüpfen möchten.
  3. Geben Sie die Service-ID ein.
  4. Geben Sie optional einen oder mehrere Bereiche ein, für die Sie Zugriff anfordern.
  5. Klicken Sie auf Start Demo.
  6. Wenn Sie dazu aufgefordert werden, bestätigen Sie, dass Sie der Verknüpfungsanfrage zustimmen und diese ablehnen können.
  7. Bestätigen Sie, dass Sie zu Ihrer Plattform weitergeleitet werden.