Benutzer in Firebase-Projekten

Die Firebase Benutzerobjekt stellt ein Benutzerkonto , das für eine Anwendung in Ihrem Projekt angemeldet. Apps haben normalerweise viele registrierte Benutzer, und jede App in einem Projekt teilt sich eine Benutzerdatenbank.

Benutzerinstanzen sind von Firebase Authentication-Instanzen unabhängig, sodass Sie mehrere Verweise auf verschiedene Benutzer im selben Kontext haben und trotzdem jede ihrer Methoden aufrufen können.

Benutzereigenschaften

Firebase Benutzer haben einen festen Satz von grundlegenden Eigenschaften-eine eindeutige Kennung, eine primäre E - Mail - Adresse, ein Name und eine Foto - URL gespeichert in der Benutzerdatenbank des Projektes, die von dem Benutzer (aktualisiert werden kann , iOS , Android , Web ). Sie können dem Benutzerobjekt keine anderen Eigenschaften direkt hinzufügen; Stattdessen können Sie die zusätzlichen Eigenschaften in anderen Speicherdiensten wie Google Cloud Firestore speichern.

Wenn sich ein Benutzer zum ersten Mal bei Ihrer App anmeldet, werden die Profildaten des Benutzers mit den verfügbaren Informationen ausgefüllt:

  • Wenn sich der Benutzer mit einer E-Mail-Adresse und einem Passwort angemeldet hat, wird nur die Eigenschaft der primären E-Mail-Adresse ausgefüllt.
  • Wenn sich der Benutzer bei einem föderierten Identitätsanbieter wie Google oder Facebook angemeldet hat, werden die vom Anbieter bereitgestellten Kontoinformationen zum Ausfüllen des Benutzerprofils verwendet
  • Wenn sich der Benutzer bei Ihrem benutzerdefinierten Authentifizierungssystem angemeldet hat, müssen Sie die gewünschten Informationen explizit zum Benutzerprofil hinzufügen

Nachdem ein Benutzerkonto erstellt wurde, können Sie die Benutzerinformationen neu laden, um alle Änderungen zu übernehmen, die der Benutzer möglicherweise auf einem anderen Gerät vorgenommen hat.

Anmeldeanbieter

Sie können Benutzer mit verschiedenen Methoden bei Ihren Apps anmelden: E-Mail-Adresse und Kennwort, Verbundidentitätsanbieter und Ihr benutzerdefiniertes Authentifizierungssystem. Sie können einem Nutzer mehr als eine Anmeldemethode zuordnen: Beispielsweise kann sich ein Nutzer mit einer E-Mail-Adresse und einem Passwort oder mit der Google-Anmeldung bei demselben Konto anmelden.

Benutzerinstanzen verfolgen jeden mit dem Benutzer verknüpften Anbieter. Auf diese Weise können Sie die Eigenschaften eines leeren Profils mithilfe der von einem Anbieter bereitgestellten Informationen aktualisieren. Siehe Verwalten von Benutzern ( iOS , Android , Web ).

Der aktuelle Benutzer

Wenn sich ein Benutzer anmeldet oder anmeldet, wird dieser Benutzer der aktuelle Benutzer der Auth-Instanz. Die Instanz behält den Status des Benutzers bei, damit beim Aktualisieren der Seite (in einem Browser) oder beim Neustarten der Anwendung die Benutzerinformationen nicht verloren gehen.

Wenn sich der Benutzer abmeldet, hört die Auth-Instanz auf, einen Verweis auf das Benutzerobjekt beizubehalten und behält seinen Status nicht mehr bei. Es gibt keinen aktuellen Benutzer. Die Benutzerinstanz ist jedoch weiterhin vollständig funktionsfähig: Wenn Sie einen Verweis darauf beibehalten, können Sie weiterhin auf die Daten des Benutzers zugreifen und diese aktualisieren.

Der Benutzerlebenszyklus

Die empfohlene Methode zum Nachverfolgen des aktuellen Status der Auth-Instanz ist die Verwendung von Listenern (in JavaScript auch "Beobachter" genannt). Ein Auth-Listener wird jedes Mal benachrichtigt, wenn etwas Relevantes mit dem Auth-Objekt passiert. Siehe Verwalten von Benutzern ( iOS , Android , Web ).

Ein Auth-Listener wird in den folgenden Situationen benachrichtigt:

  • Die Initialisierung des Auth-Objekts ist abgeschlossen und ein Benutzer war bereits von einer vorherigen Sitzung angemeldet oder wurde vom Anmeldevorgang eines Identitätsanbieters umgeleitet
  • Ein Benutzer meldet sich an (der aktuelle Benutzer ist festgelegt)
  • Ein Benutzer meldet sich ab (der aktuelle Benutzer wird null)
  • Das Zugriffstoken des aktuellen Benutzers wird aktualisiert. Dieser Fall kann unter folgenden Bedingungen auftreten:
    • Das Zugriffstoken läuft ab: Dies ist eine übliche Situation. Das Aktualisierungstoken wird verwendet, um einen neuen gültigen Satz von Token abzurufen.
    • Der Benutzer ändert sein Passwort: Firebase gibt neue Zugriffs- und Aktualisierungstokens aus und macht die alten Tokens abgelaufen. Dadurch verfällt automatisch das Token des Benutzers und/oder der Benutzer wird aus Sicherheitsgründen auf jedem Gerät abgemeldet.
    • Der Benutzer authentifiziert sich erneut: Einige Aktionen erfordern, dass die Anmeldeinformationen des Benutzers kürzlich ausgestellt wurden; solche Aktionen umfassen das Löschen eines Kontos, das Festlegen einer primären E-Mail-Adresse und das Ändern eines Passworts. Anstatt den Benutzer abzumelden und dann erneut anzumelden, rufen Sie neue Anmeldeinformationen vom Benutzer ab und übergeben Sie die neuen Anmeldeinformationen an die Methode zur erneuten Authentifizierung des Benutzerobjekts.

Authentifizierungstoken

Wenn Sie eine Authentifizierung mit Firebase durchführen, können Sie auf drei Arten von Authentifizierungstoken stoßen:

Firebase-ID-Token Wird von Firebase erstellt, wenn sich ein Nutzer bei einer App anmeldet. Diese Token sind signierte JWTs, die einen Benutzer in einem Firebase-Projekt sicher identifizieren. Diese Token enthalten grundlegende Profilinformationen für einen Benutzer, einschließlich der ID-Zeichenfolge des Benutzers, die für das Firebase-Projekt eindeutig ist. Da die Integrität von ID - Token überprüft werden kann , können Sie sie zu einem Backend - Server senden , um die derzeit angemeldeten Nutzer zu identifizieren.
Identitätsanbieter-Token Erstellt von föderierten Identitätsanbietern wie Google und Facebook. Diese Token können unterschiedliche Formate haben, sind jedoch häufig OAuth 2.0-Zugriffstoken. Apps verwenden diese Token, um zu überprüfen, ob sich Benutzer erfolgreich beim Identitätsanbieter authentifiziert haben, und konvertieren sie dann in Anmeldeinformationen, die von Firebase-Diensten verwendet werden können.
Benutzerdefinierte Firebase-Token Erstellt von Ihrem benutzerdefinierten Authentifizierungssystem, damit sich Benutzer mit Ihrem Authentifizierungssystem bei einer App anmelden können. Benutzerdefinierte Token sind JWTs über ein Dienstkonto privaten Schlüssel signiert . Apps verwenden diese Token ähnlich wie die Token, die von Verbundidentitätsanbietern zurückgegeben werden.

Verifizierte E-Mail-Adressen

Firebase betrachtet eine E-Mail als verifiziert, wenn sie zwei Bedingungen erfüllt: 1. Der Benutzer schließt den Firebase-Bestätigungsablauf ab 2. Die E-Mail wird von einem vertrauenswürdigen Identitätsanbieter, kurz IdP, verifiziert.

IdPs, die E-Mails einmal verifizieren, aber Benutzern dann erlauben, E-Mail-Adressen zu ändern, ohne dass eine erneute Verifizierung erforderlich ist, werden nicht vertrauenswürdig. IdPs, die entweder Eigentümer der Domain sind oder immer eine Bestätigung benötigen, gelten als vertrauenswürdig.

Vertrauenswürdige Anbieter:

  • Google (für @gmail.com-Adressen)
  • Yahoo (für @yahoo.com-Adressen)
  • Microsoft (für @outlook.com- und @hotmail.com-Adressen)
  • Apple (immer verifiziert, da Accounts immer verifiziert und multifaktoriell authentifiziert sind)

Nicht vertrauenswürdige Anbieter:

  • Facebook
  • Twitter
  • GitHub
  • Google, Yahoo und Microsoft für Domains, die nicht von diesem Identitätsanbieter ausgestellt wurden
  • E-Mail / Passwort ohne E-Mail-Verifizierung

In einigen Situationen verknüpft Firebase automatisch Konten, wenn sich ein Nutzer mit derselben E-Mail-Adresse bei verschiedenen Anbietern anmeldet. Dies kann jedoch nur geschehen, wenn bestimmte Kriterien erfüllt sind. Betrachten Sie die folgende Situation, um zu verstehen, warum: Ein Benutzer meldet sich bei Google mit einem @gmail.com-Konto an und ein böswilliger Akteur erstellt ein Konto mit derselben @gmail.com-Adresse, meldet sich jedoch über Facebook an. Wenn diese beiden Konten automatisch verknüpft würden, würde der böswillige Akteur Zugriff auf das Konto des Benutzers erhalten.

In den folgenden Fällen wird beschrieben, wann wir Konten automatisch verknüpfen und einen Fehler auslösen, der eine Benutzer- oder Entwickleraktion erfordert:

  • Der Benutzer meldet sich bei einem nicht vertrauenswürdigen Anbieter an und dann bei einem anderen nicht vertrauenswürdigen Anbieter mit derselben E-Mail (z. B. Facebook gefolgt von GitHub). Dies löst einen Fehler aus, der eine Kontoverknüpfung erfordert.
  • Der Benutzer meldet sich bei einem vertrauenswürdigen Anbieter an und dann bei einem nicht vertrauenswürdigen Anbieter mit derselben E-Mail (z. B. Google gefolgt von Facebook). Dies löst einen Fehler aus, der eine Kontoverknüpfung erfordert.
  • Der Benutzer meldet sich bei einem nicht vertrauenswürdigen Anbieter an und dann bei einem vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse (z. B. Facebook gefolgt von Google). Der vertrauenswürdige Anbieter überschreibt den nicht vertrauenswürdigen Anbieter. Wenn der Benutzer erneut versucht, sich bei Facebook anzumelden, führt dies zu einem Fehler, der eine Kontoverknüpfung erfordert.
  • Der Benutzer meldet sich bei einem vertrauenswürdigen Anbieter an und dann bei einem anderen vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse (z. B. Apple gefolgt von Google). Beide Anbieter werden fehlerfrei verlinkt.

Sie können eine E-Mail manuell mit dem Admin SDK als bestätigt festlegen. Wir empfehlen dies jedoch nur, wenn Sie wissen, dass der Benutzer tatsächlich der Eigentümer der E-Mail ist.