Benutzer in Firebase-Projekten

Das Firebase- Benutzerobjekt stellt ein Benutzerkonto dar, das sich für eine App in Ihrem Projekt registriert hat. Apps haben normalerweise viele registrierte Benutzer und jede App in einem Projekt teilt eine Benutzerdatenbank.

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

Benutzereigenschaften

Firebase-Benutzer verfügen über einen festen Satz grundlegender Eigenschaften – eine eindeutige ID, eine primäre E-Mail-Adresse, einen Namen und eine Foto-URL –, die in der Benutzerdatenbank des Projekts gespeichert sind und vom Benutzer aktualisiert werden können ( 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 gefüllt:

  • Wenn sich der Benutzer mit einer E-Mail-Adresse und einem Passwort angemeldet hat, wird nur die Eigenschaft „Primäre 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 zur Verfügung gestellten Kontoinformationen zum Ausfüllen des Benutzerprofils verwendet
  • Wenn sich der Benutzer bei Ihrem benutzerdefinierten Authentifizierungssystem registriert hat, müssen Sie die gewünschten Informationen explizit zum Profil des Benutzers hinzufügen

Sobald 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 Passwort, föderierte Identitätsanbieter und Ihr benutzerdefiniertes Authentifizierungssystem. Sie können einem Benutzer mehr als eine Anmeldemethode zuordnen: Beispielsweise kann sich ein Benutzer mit einer E-Mail-Adresse und einem Passwort bei demselben Konto anmelden oder Google Sign-In verwenden.

Benutzerinstanzen verfolgen alle mit dem Benutzer verknüpften Anbieter. Auf diese Weise können Sie die Eigenschaften leerer Profile mithilfe der von einem Anbieter bereitgestellten Informationen aktualisieren. Siehe Benutzer verwalten ( iOS , Android , Web ).

Der aktuelle Benutzer

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

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

Der Benutzerlebenszyklus

Die empfohlene Methode zum Verfolgen 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 Benutzer verwalten ( iOS , Android , Web ).

Ein Auth-Listener wird in den folgenden Situationen benachrichtigt:

  • Die Initialisierung des Auth-Objekts ist abgeschlossen und ein Benutzer war bereits in einer früheren Sitzung angemeldet oder wurde vom Anmeldeablauf 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 den folgenden Bedingungen auftreten:
    • Das Zugriffstoken läuft ab: Dies ist eine häufige Situation. Der Aktualisierungstoken wird verwendet, um einen neuen gültigen Satz Token zu erhalten.
    • Der Benutzer ändert sein Passwort: Firebase stellt neue Zugriffs- und Aktualisierungstoken aus und macht die alten Token abgelaufen. Dadurch läuft aus Sicherheitsgründen automatisch das Token des Benutzers ab und/oder der Benutzer wird auf jedem Gerät abgemeldet.
    • Der Benutzer authentifiziert sich erneut: Für einige Aktionen ist es erforderlich, dass die Anmeldeinformationen des Benutzers kürzlich ausgestellt wurden. Zu diesen Aktionen gehören 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, holen Sie sich neue Anmeldeinformationen vom Benutzer und übergeben Sie die neuen Anmeldeinformationen an die Reauthenticate-Methode des Benutzerobjekts.

Benutzer-Selbstbedienung

Standardmäßig ermöglicht Firebase Benutzern, sich ohne administrativen Eingriff anzumelden und ihre Konten zu löschen. In vielen Fällen ermöglicht dies Endbenutzern, Ihre Anwendung oder Ihren Dienst zu entdecken und mit minimaler Reibung zu integrieren (oder zu entfernen).

Es gibt jedoch Situationen, in denen Sie möchten, dass Benutzer manuell oder programmgesteuert von einem Administrator erstellt werden, entweder über das Admin SDK oder die Firebase-Konsole. In diesen Fällen können Sie Benutzeraktionen auf der Seite „Firebase-Authentifizierungseinstellungen“ deaktivieren, wodurch das Erstellen und Löschen von Konten durch Endbenutzer verhindert wird. Wenn Sie Mandantenfähigkeit verwenden, müssen Sie eine HTTP-Anfrage stellen , um diese Funktionen für jeden Mandanten zu deaktivieren .

Wenn ein Endbenutzer versucht, ein Konto in Ihrem System zu erstellen oder zu löschen, gibt der Firebase-Dienst einen Fehlercode zurück: auth/admin-restricted-operation für Web-API-Aufrufe oder ERROR_ADMIN_RESTRICTED_OPERATION für Android und iOS. Sie sollten den Fehler in Ihrem Frontend ordnungsgemäß behandeln, indem Sie den Benutzer auffordern, die entsprechenden Maßnahmen für Ihren Dienst zu ergreifen.

Authentifizierungstoken

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

Firebase-ID-Tokens Wird von Firebase erstellt, wenn sich ein Benutzer bei einer App anmeldet. Bei diesen Token handelt es sich um 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-Tokens überprüft werden kann , können Sie diese an einen Backend-Server senden, um den aktuell angemeldeten Benutzer zu identifizieren.
Identitätsanbieter-Token Erstellt von Verbundidentitätsanbietern wie Google und Facebook. Diese Token können unterschiedliche Formate haben, häufig handelt es sich jedoch um OAuth 2.0-Zugriffstoken. Apps verwenden diese Token, um zu überprüfen, ob sich Benutzer erfolgreich beim Identitätsanbieter authentifiziert haben, und wandeln sie dann in Anmeldeinformationen um, die von Firebase-Diensten verwendet werden können.
Benutzerdefinierte Firebase-Tokens Wird von Ihrem benutzerdefinierten Authentifizierungssystem erstellt, um Benutzern die Anmeldung bei einer App über Ihr Authentifizierungssystem zu ermöglichen. Benutzerdefinierte Token sind JWTs , die mit dem privaten Schlüssel eines Dienstkontos signiert werden . Apps verwenden diese Token ähnlich wie die Token, die von föderierten Identitä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-Verifizierungsablauf ab
  2. Die E-Mail wird von einem vertrauenswürdigen Identitätsanbieter, kurz IdP, verifiziert.

IdPs, die E-Mails einmal verifizieren, Benutzern dann aber erlauben, E-Mail-Adressen zu ändern, ohne dass eine erneute Verifizierung erforderlich ist, gelten nicht als vertrauenswürdig. IdPs, die entweder Eigentümer der Domäne sind oder immer eine Verifizierung erfordern, 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 Konten immer verifiziert und mehrfaktorauthentifiziert sind)

Nicht vertrauenswürdige Anbieter:

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

In manchen Situationen verknüpft Firebase Konten automatisch, wenn sich ein Benutzer bei verschiedenen Anbietern mit derselben E-Mail-Adresse anmeldet. Dies kann jedoch nur geschehen, wenn bestimmte Kriterien erfüllt sind. Um zu verstehen, warum das so ist, betrachten Sie die folgende Situation: Ein Benutzer meldet sich über 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.

Die folgenden Fälle beschreiben, wann wir Konten automatisch verknüpfen und einen Fehler auslösen, der Benutzer- oder Entwickleraktionen erfordert:

  • Der Benutzer meldet sich bei einem nicht vertrauenswürdigen Anbieter an und meldet sich dann bei einem anderen nicht vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse an (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 meldet sich dann bei einem nicht vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse an (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 meldet sich dann bei einem vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse an (z. B. Facebook, gefolgt von Google). Der vertrauenswürdige Anbieter überschreibt den nicht vertrauenswürdigen Anbieter. Wenn der Benutzer versucht, sich erneut bei Facebook anzumelden, wird ein Fehler verursacht, der eine Kontoverknüpfung erfordert.
  • Der Benutzer meldet sich bei einem vertrauenswürdigen Anbieter an und meldet sich dann bei einem anderen vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse an (z. B. Apple, gefolgt von Google). Die Verlinkung beider Anbieter erfolgt fehlerfrei.

Sie können eine E-Mail mithilfe des Admin SDK manuell als verifiziert festlegen. Wir empfehlen jedoch, dies nur zu tun, wenn Sie wissen, dass der Benutzer tatsächlich der Eigentümer der E-Mail ist.