Endnutzer authentifizieren

Wenn Ihre Anwendung Anfragen von Endnutzern verarbeitet, sollten Sie als Best Practice den Zugriff auf zugelassene Endnutzer beschränken. Wählen Sie dazu eine der folgenden Optionen aus:

Für beide der oben genannten Optionen benötigen Sie eine öffentliche Web- oder mobile Anwendung, die den Anmeldevorgang übernimmt und dann authentifizierte API-Aufrufe an einen Cloud-Dienst durchführt. Diese öffentliche Webanwendung kann selbst in einem öffentlichen Cloud Run-Dienst gehostet werden. Wenn Sie Google Log-in verwenden, muss sich diese öffentliche Webanwendung in derselben Domain wie der Cloud Run-Dienst befinden, für den eine Authentifizierung erforderlich ist.

Identify Platform oder Firebase Authentication verwenden

Wenn Sie Nutzer über E-Mail/Passwort, Telefonnummer, soziale Netzwerke wie Facebook oder GitHub oder einen benutzerdefinierten Authentifizierungsmechanismus authentifizieren möchten, können Sie Firebase Authentication oder Identity Platform verwenden. Eine vollständige Anleitung zur Verwendung von Identity Platform für die Endnutzerauthentifizierung finden Sie in der Anleitung Endnutzerauthentifizierung für Cloud Run.

Die Verwendung von Firebase Authentication ähnelt der Verwendung von Identity Platform.

  1. Richten Sie Firebase Authentication in Ihrem Projekt und Dienst ein:

    1. Richten Sie Firebase Authentication in der Firebase Console ein.

      Zur Firebase Console

    2. Importieren Sie das geeignete Firebase Admin SDK und konfigurieren Sie es ordnungsgemäß.

    3. Fügen Sie Ihrem Code Middleware hinzu, um Firebase-ID-Tokens zu überprüfen.

    4. Stellen Sie den Dienst öffentlich bereit.

  2. Gehen Sie in Ihrer Web- oder mobilen Anwendung so vor:

    1. Verwenden Sie die erforderliche Firebase Authentication-Clientbibliothek, um ein ID-Token abzurufen:
    2. Fügen Sie das ID-Token in der Anfrage an den Dienst im Header Authorization: Bearer ID_TOKEN ein.

Das Tutorial Endnutzerauthentifizierung für Cloud Run enthält eine schrittweise Anleitung für eine Anwendung mit dieser Authentifizierungsmethode.

Nutzerprofilinformationen abrufen

Wenn Sie auf Nutzerprofildaten zugreifen möchten, können Sie das Firebase Admin SDK verwenden, um Nutzerdaten abzurufen.

Google Log-in verwenden

Aktivieren Sie Google Log-in in Ihrem Projekt:

  1. Erstellen Sie eine OAuth 2.0-Client-ID für Ihre Anwendung in demselben Projekt wie der Dienst, den Sie sichern möchten:
    1. Rufen Sie die Seite Anmeldedaten auf.

      Zur Seite "Domainbestätigung"

    2. Wählen Sie das Projekt mit dem Dienst aus, den Sie sichern möchten.
    3. Klicken Sie auf Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
      1. Möglicherweise müssen Sie vor dem Erstellen einer Client-ID den OAuth-Zustimmungsbildschirm konfigurieren. Wenn Sie die Konfiguration abgeschlossen haben, können Sie fortfahren.
    4. Wählen Sie den Anwendungstyp aus, für den Sie die Anmeldedaten erstellen möchten.
    5. Fügen Sie ggf. einen Namen und Einschränkungen hinzu und klicken Sie dann auf Erstellen.
  2. Stellen Sie den Dienst, den Sie sichern möchten, noch einmal bereit. Dadurch wird sichergestellt, dass die richtige Client-ID für den Dienst festgelegt wird.

    Wenn Sie mehrere OAuth-Client-IDs haben, z. B. jeweils eine für Android, iOS und Web, müssen Sie Ihren Dienst/Ihre Dienste nach dem Hinzufügen neu bereitstellen, damit die Änderungen übernommen werden. Dasselbe gilt beim Löschen einer Client-ID: Sie müssen den Dienst neu bereitstellen, damit die Client-ID entfernt und Anfragen abgelehnt werden. Alle Client-IDs innerhalb eines Projekts werden akzeptiert.

Gehen Sie in Ihrer Web- oder mobilen Anwendung so vor:

  1. Rufen Sie ein ID-Token für die OAuth-Client-ID ab:
  2. Fügen Sie das ID-Token in der Anfrage an den Dienst im Header Authorization: Bearer ID_TOKEN ein.

Cloud Run validiert das Authentifizierungstoken und lässt die Anfrage entweder zu oder lehnt sie ab, bevor der Dienst gestartet wird. Wenn eine Anfrage abgelehnt wird, wird sie Ihnen nicht in Rechnung gestellt.

Webanwendungen, Authentifizierung und CORS

Wenn Sie eine Webanwendung erstellen, müssen Sie auf CORS-Probleme (Cross-Origin Resource Sharing) achten. Beispielsweise werden CORS-Preflight-Anfragen ohne Authorization-Header gesendet, sodass sie von einem nicht öffentlichen Dienst abgelehnt werden. Da die Preflight-Anfragen fehlschlagen, schlägt auch die Hauptanfrage fehl.

Zur Lösung dieses Problems können Sie die Webanwendung und Dienste auf derselben Domain hosten, um CORS-Preflight-Anfragen zu umgehen. Verwenden Sie dafür Firebase Hosting.

Nutzerprofilinformationen abrufen

Wenn Sie auf Nutzerprofilinformationen zugreifen möchten, können Sie das Token aus dem Header Authorization abrufen und eine Anfrage an den Endpunkt Validate Token senden.

Der Text des ID-Tokens wird mit den folgenden Informationen zurückgegeben:

{
 // These six fields are included in all Google ID Tokens.
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // These seven fields are only included when the user has granted the "profile"
 // and "email" OAuth scopes to the application.
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}

Fehlerbehebung

Wenn Nutzeranfragen abgelehnt werden und Sie der Meinung sind, sie sollten zugelassen werden, achten Sie darauf, dass den Nutzern die Rolle roles/run.invoker oder die Berechtigung run.routes.invoke gewährt wurde. Weitere Informationen hierzu finden Sie in der IAM-Referenz zu Cloud Run.

Nächste Schritte

Eine vollständige Anleitung zur Verwendung von Identity Platform für die Endnutzerauthentifizierung finden Sie in der Anleitung Endnutzerauthentifizierung für Cloud Run.