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 sich eine Benutzerdatenbank.
Benutzerinstanzen sind unabhängig von Firebase-Authentifizierungsinstanzen, sodass Sie mehrere Verweise auf verschiedene Benutzer innerhalb desselben Kontexts haben und dennoch eine ihrer Methoden aufrufen können.
Benutzereigenschaften
Firebase-Benutzer haben 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 ausgefüllt:
- Wenn sich der Benutzer mit einer E-Mail-Adresse und einem Kennwort 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 verwendet, um das Profil des Benutzers zu füllen
- Wenn sich der Benutzer bei Ihrem benutzerdefinierten Authentifizierungssystem angemeldet hat, müssen Sie die gewünschten Informationen explizit zum Profil des Benutzers hinzufügen
Sobald ein Benutzerkonto erstellt wurde, können Sie die Informationen des Benutzers neu laden, um alle Änderungen zu integrieren, die der Benutzer möglicherweise auf einem anderen Gerät vorgenommen hat.
Anmeldeanbieter
Sie können Benutzer mit mehreren Methoden bei Ihren Apps anmelden: E-Mail-Adresse und Kennwort, föderierte Identitätsanbieter und Ihr benutzerdefiniertes Authentifizierungssystem. Sie können einem Benutzer mehr als eine Anmeldemethode zuweisen: Beispielsweise kann sich ein Benutzer mit einer E-Mail-Adresse und einem Passwort oder mit der Google-Anmeldung bei demselben Konto anmelden.
Benutzerinstanzen verfolgen jeden Anbieter, der mit dem Benutzer verknüpft ist. 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 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, hört die Auth-Instanz auf, einen Verweis auf das Benutzerobjekt beizubehalten, und behält seinen Zustand nicht länger bei; Es gibt keinen aktuellen Benutzer. Die Benutzerinstanz bleibt jedoch weiterhin voll 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 als „Beobachter“ bezeichnet). 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 in einer vorherigen Sitzung angemeldet oder wurde vom Anmeldeablauf eines Identitätsanbieters umgeleitet
- Ein Benutzer meldet sich an (der aktuelle Benutzer wird 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 häufige Situation. Das Aktualisierungstoken wird verwendet, um einen neuen gültigen Tokensatz zu erhalten.
- Der Benutzer ändert sein Passwort: Firebase stellt neue Zugriffs- und Aktualisierungstoken aus und macht die alten Token abgelaufen. Dadurch läuft das Token des Benutzers automatisch ab 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; 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 ihn dann erneut anzumelden, holen Sie sich neue Anmeldeinformationen vom Benutzer und übergeben Sie die neuen Anmeldeinformationen an die Reauthenticate-Methode des Benutzerobjekts.
Benutzer-Self-Service
Standardmäßig ermöglicht Firebase Benutzern, sich ohne Administratoreingriff anzumelden und ihre Konten zu löschen. In vielen Fällen ermöglicht dies Endbenutzern, Ihre Anwendung oder Ihren Dienst mit minimaler Reibung zu entdecken und einzubinden (oder auszulagern).
Es gibt jedoch Situationen, in denen Benutzer manuell oder programmgesteuert von einem Administrator erstellt werden sollen, entweder mit dem Admin SDK oder der 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 Multi-Tenancy 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 an Ihrem Front-End ordnungsgemäß behandeln, indem Sie den Benutzer auffordern, die entsprechenden Maßnahmen für Ihren Dienst zu ergreifen.
Auth-Token
Wenn Sie die 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 Benutzer 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 verifiziert werden kann , können Sie sie an einen Back-End-Server senden, um den aktuell angemeldeten Benutzer zu identifizieren. |
Identitätsanbieter-Token | Erstellt von föderierten Identitätsanbietern wie Google und Facebook. Diese Token können unterschiedliche Formate haben, sind aber oft 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 Benutzer sich mit Ihrem Authentifizierungssystem bei einer App anmelden können. Benutzerdefinierte Token sind JWTs , die mit dem privaten Schlüssel eines Dienstkontos signiert wurden . Apps verwenden diese Token ähnlich wie die von föderierten Identitätsanbietern zurückgegebenen Token. |
Verifizierte E-Mail-Adressen
Firebase betrachtet eine E-Mail als verifiziert, wenn sie zwei Bedingungen erfüllt:
- Der Benutzer schließt den Firebase-Überprüfungsablauf ab
- 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, sind nicht vertrauenswürdig. IdPs, die entweder Eigentümer der Domäne sind oder immer eine Verifizierung 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 Multi-Faktor-authentifiziert sind)
Nicht vertrauenswürdige Anbieter:
- GitHub
- Google, Yahoo und Microsoft für Domains, die nicht von diesem Identitätsanbieter ausgestellt wurden
- E-Mail / Passwort ohne E-Mail-Bestätigung
In einigen Situationen verknüpft Firebase automatisch Konten, wenn sich ein Benutzer mit derselben E-Mail-Adresse bei verschiedenen Anbietern anmeldet. Dies kann jedoch nur geschehen, wenn bestimmte Kriterien erfüllt sind. Um zu verstehen, warum, 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 aber ü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 wenn wir einen Fehler ausgeben, der eine Benutzer- oder Entwickleraktion 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 dann bei einem nicht vertrauenswürdigen Anbieter mit derselben E-Mail-Adresse (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). Beide Anbieter werden fehlerfrei verknüpft.
Sie können eine E-Mail mithilfe des Admin SDK manuell als verifiziert festlegen, aber wir empfehlen, dies nur zu tun, wenn Sie wissen, dass der Benutzer die E-Mail wirklich besitzt.