auth:import und auth:export

  • Mit dem Befehl auth:import werden Nutzerkonten in Firebase-Projekte importiert.

  • Mit dem Befehl auth:export werden Nutzerkonten in JSON- und CSV-Dateien exportiert.

Passwort-Hash-Parameter

Um die Passwort-Hash-Parameter für Ihr Projekt zu ermitteln, rufen Sie in der Firebase Console den Bereich Authentifizierung > Nutzer auf und klicken Sie über der Liste der Nutzer auf das Dreipunkt-Menü. Es wird ein Dialogfeld mit einer Liste von Passwort-Hash-Parametern angezeigt, die Sie mit den Befehlen auth:import und auth:export verwenden können:

hash_config {
  algorithm: SCRYPT,
  base64_signer_key: <...sensitive...>,
  base64_salt_separator: <...sensitive...>,
  rounds: 8,
  mem_cost: 14,
}

Diese Werte sind sensibel und sollten daher mit Bedacht gespeichert werden. Die meisten Firebase-Projekte verwenden SCRYPT, eine geänderte Version des Crypto-Hash-Algorithmus, der die Standardeinstellung für neue Projekte ist.

auth:import

firebase auth:import ACCOUNT_FILE    \
    --hash-algo=HASH_ALGORITHM         \
    --hash-key=KEY                     \
    --salt-separator=SALT_SEPARATOR    \
    --rounds=ROUNDS                    \
    --mem-cost=MEM_COST                \
    --parallelization=PARALLELIZATION  \
    --block-size=BLOCK_SIZE            \
    --dk-len=DK_LEN                    \
    --hash-input-order=HASH_INPUT_ORDER
Parameter
account_file Die CSV- oder JSON-Datei mit den zu importierenden Nutzerkonten. Siehe Dateiformat.
Hash-Algo Der Algorithmus, der zum Hashen von Passwörtern in der Nutzerkontodatei verwendet wird.
Erforderlich für den Import von Konten mit Passwortfeldern. Einer der folgenden Werte: BCRYPT, SCRYPT, STANDARD_SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1, HMAC_MD5, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1, PBKDF2_SHA256.
Hash-Schlüssel Schlüssel zum Hashen von Passwörtern.
Erforderlich für die Algorithmen SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 und HMAC_MD5. Dieses Argument muss als base64-codierter String formatiert werden.
Salt-Trennzeichen Salt-Trennzeichen, das bei der Überprüfung des Passworts an Salt angehängt wird.
Optional für alle Algorithmen. Dieses Argument muss als base64-codierter String formatiert werden.
rounds Die Anzahl der Runden, die zum Hashen von Passwörtern verwendet werden.
Erforderlich für die Algorithmen SCRYPT, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1 und PBKDF2_SHA256.
mem-cost Dieser Parameter stellt entweder die für den Algorithmus SCRYPT erforderlichen Arbeitsspeicherkosten dar ODER die für den Algorithmus STANDARD_SCRYPT erforderlichen CPU-/Arbeitsspeicherkosten.
Parallelisierung Die Parallelisierung des Hash-Algorithmus.
Erforderlich für den STANDARD_SCRYPT-Algorithmus.
block-size Die Blockgröße (normalerweise 8) des Hash-Algorithmus.
Erforderlich für den STANDARD_SCRYPT-Algorithmus.
dk-len Die abgeleitete Schlüssellänge des Hash-Algorithmus.
Erforderlich für den STANDARD_SCRYPT-Algorithmus.
Hash-Eingabereihenfolge Die Reihenfolge von Passwort und Salt.
Mögliche Werte sind SALT_FIRST und PASSWORD_FIRST. Dieses Flag gilt für SHA512, SHA256, SHA1, MD5, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 und HMAC_MD5.

auth:export

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Parameter
account_file Die CSV- oder JSON-Datei, in die exportiert werden soll. Siehe Dateiformat.
file_format Optional. Das zu exportierende Dateiformat: entweder CSV oder JSON.
Wenn der im Parameter account_file angegebene Dateiname mit .csv oder .json endet, wird dieses Format verwendet und dieser Parameter ignoriert.

Dateiformat

Die Nutzerkontodatei kann als CSV oder JSON formatiert werden.

CSV

Eine CSV-Nutzerkontodatei hat folgendes Format:

Spaltennummer Feldbeschreibung Feldtyp Kommentare
1 UID String Erforderlich
Diese ID muss für alle Konten in Ihren Firebase-Projekten eindeutig sein. Wenn Sie ein Konto mit einer bereits vorhandenen UID importieren, wird das Konto überschrieben.
2 E-Mail String Optional
3 E-Mail-Adresse verifiziert Boolesch Optional
4 Passwort-Hash String Optional:
Ein base64-codierter String. Für dieses Feld muss der Aufrufer die Rolle „Bearbeiter“ oder „Inhaber“ haben.
5 Passwort/Salt String Optional:
Ein base64-codierter String. Für dieses Feld muss der Aufrufer die Rolle „Bearbeiter“ oder „Inhaber“ haben.
6 Name String Optional
7 Foto-URL String Optional
8 Google-ID String Optional
9 Google-E-Mail-Adresse String Optional
10 Google-Anzeigename String Optional
11 Google Fotos-URL String Optional
12 Facebook-ID String Optional
13 Facebook-E-Mail String Optional
14 Facebook-Anzeigename String Optional
15 Facebook-Foto-URL String Optional
16 Twitter-ID String Optional
17 Twitter-E-Mail String Optional
18 Anzeigename für Twitter String Optional
19 Twitter-Foto-URL String Optional
20 GitHub-ID String Optional
21 GitHub-E-Mail String Optional
22 GitHub-Anzeigename String Optional
23 GitHub-Foto-URL String Optional
24 Erstellungszeit des Nutzers Lang Optionaler
Epochen-Unixzeitstempel in Millisekunden.
25 Zeitpunkt der letzten Anmeldung Lang Optionaler
Epochen-Unixzeitstempel in Millisekunden.
26 Telefonnummer String Optional

Wenn Sie einen optionalen Wert nicht angeben, muss trotzdem ein leeres Feld für den Wert eingefügt werden. Ein leeres Feld kann eine beliebige Anzahl von Leerzeichen enthalten.

Die folgende Zeile stellt beispielsweise ein Nutzerkonto dar:

111, test@test.org, false, Jlf7onfLbzqPNFP/1pqhx6fQF/w=, c2FsdC0x, Test User, http://photo.com/123, , , , , 123, test@test.org, Test FB User, http://photo.com/456, , , , , , , , , 1486324027000, 1486324027000

JSON

Eine JSON-Nutzerkontodatei hat folgendes Format:

{
  "users": [
    {
      "localId": UID,
      "email": EMAIL_ADDRESS
      "emailVerified": EMAIL_VERIFIED,
      "passwordHash": BASE64_ENCODED_PASSWORD_HASH,
      "salt": BASE64_ENCODED_PASSWORD_SALT,
      "displayName": NAME,
      "photoUrl": PHOTO_URL,
      "createdAt": CREATED_AT_IN_MILLIS,
      "lastSignedInAt": LAST_SIGNEDIN_AT_IN_MILLIS,
      "phoneNumber": PHONE_NUMBER
      "providerUserInfo": [
        {
          "providerId": PROVIDER_ID,
          "rawId": PROVIDER_UID,
          "email":  PROVIDER_EMAIL,
          "displayName": PROVIDER_NAME,
          "photoUrl": PROVIDER_PHOTO_URL
        },
        ...
      ]
    },
    ...
  ]
}

Ersetzen Sie PROVIDER_ID durch einen der folgenden Werte:

  • google.com
  • facebook.com
  • github.com
  • twitter.com