auth:import et auth:export

  • La commande auth:import importe des comptes utilisateur dans des projets Firebase.

  • La commande auth:export exporte les comptes utilisateur au format JSON et CSV.

Paramètres de hachage du mot de passe

Pour déterminer les paramètres de hachage du mot de passe utilisés pour votre projet, accédez à la section Authentification > la section Utilisateurs de la console Firebase, puis cliquez sur l'icône des trois points au-dessus de la liste des utilisateurs. Une boîte de dialogue contenant une liste de paramètres de hachage de mot de passe que vous pouvez utiliser avec auth:import et auth:export commandes:

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

Ces valeurs étant sensibles, conservez-les avec précaution. La plupart des projets Firebase utilisent SCRYPT, une version modifiée de l'algorithme de hachage scrypt qui est le paramètre par défaut pour les nouveaux projets.

auth:importer

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
Paramètres
account_file Fichier CSV ou JSON contenant les comptes utilisateur à importer. Consultez la section Format de fichier.
hash-algo Algorithme utilisé pour hacher les mots de passe dans le fichier de compte utilisateur.
Obligatoire pour importer des comptes avec des champs de mot de passe. L'une des valeurs suivantes: BCRYPT, SCRYPT, STANDARD_SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1, HMAC_MD5, MD5 SHA512, SHA256, SHA1, PBKDF_SHA1, PBKDF2_SHA256.
clé de hachage Clé utilisée pour hacher les mots de passe.
Obligatoire pour le paramètre SCRYPT, HMAC_SHA512, HMAC_SHA256 HMAC_SHA1 et HMAC_MD5. Cet argument doit être encodé en base64 .
séparateur de sel Séparateur de sel qui sera ajouté au salage lors de la vérification du mot de passe.
Facultatif pour tous les algorithmes. Cet argument doit avoir le format encodée en base64.
rounds Nombre de arrondis utilisés pour hacher les mots de passe.
Obligatoire pour le champ SCRYPT, MD5, SHA512 SHA256, SHA1, PBKDF_SHA1 et PBKDF2_SHA256.
mem-cost Ce paramètre représente le coût de la mémoire requis pour le Algorithme SCRYPT OU coût du processeur/de la mémoire requis pour Algorithme STANDARD_SCRYPT.
parallélisation Parallélisation de l'algorithme de hachage.
Obligatoire pour l'algorithme STANDARD_SCRYPT.
taille de bloc Taille de bloc (normalement 8) de l'algorithme de hachage.
Obligatoire pour l'algorithme STANDARD_SCRYPT.
Dk-Len Longueur de clé dérivée de l'algorithme de hachage.
Obligatoire pour l'algorithme STANDARD_SCRYPT.
ordre-d'entrée-de-hachage Ordre du mot de passe et du salage.
Les valeurs possibles sont les suivantes : SALT_FIRST et PASSWORD_FIRST. Cette option s'applique à SHA512, SHA256, SHA1, MD5, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 et HMAC_MD5.

auth:exporter

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Paramètres
fichier_compte Fichier CSV ou JSON vers lequel exporter. Voir Fichier de sortie.
format_fichier Facultatif. Format de fichier à exporter: CSV ou JSON.
Si le nom de fichier spécifié dans le paramètre account_file se termine par .csv ou .json, ce format est utilisé et ce paramètre est ignoré.

Format de fichier

Le fichier du compte utilisateur peut être au format CSV ou JSON.

CSV

Un fichier de compte utilisateur CSV a le format suivant:

Numéro de colonne Description du champ Type de champ Commentaires
1 UID Chaîne Obligatoire
Cet ID doit être unique parmi tous les comptes de vos projets Firebase. Si vous importez un compte avec un UID qui existe déjà, le compte sera écrasé.
2 E-mail Chaîne Facultatif
3 Adresse e-mail vérifiée Booléen Facultatif
4 Hachage de mot de passe Chaîne Facultatif
Chaîne encodée en base64. Ce champ nécessite que l'appelant dispose du rôle Éditeur ou Propriétaire.
5 Salt des mots de passe Chaîne Facultatif
Chaîne encodée en base64. Ce champ nécessite que l'appelant dispose du rôle Éditeur ou Propriétaire.
6 Nom Chaîne Facultatif
7 URL de la photo Chaîne Facultatif
8 ID Google Chaîne Facultatif
9 Adresse e-mail Google Chaîne Facultatif
10 Nom à afficher Google Chaîne Facultatif
11 URL de la photo Google Chaîne Facultatif
12 ID Facebook Chaîne Facultatif
13 E-mail Facebook Chaîne Facultatif
14 Nom à afficher Facebook Chaîne Facultatif
15 URL de la photo Facebook Chaîne Facultatif
16 ID Twitter Chaîne Facultatif
17 Adresse e-mail Twitter Chaîne Facultatif
18 Nom à afficher sur Twitter Chaîne Facultatif
19 URL de la photo sur Twitter Chaîne Facultatif
20 ID GitHub Chaîne Facultatif
21 Adresse e-mail GitHub Chaîne Facultatif
22 Nom à afficher GitHub Chaîne Facultatif
23 URL de la photo GitHub Chaîne Facultatif
24 Heure de création de l'utilisateur Long Facultatif
Code temporel Unix en millisecondes de l'epoch.
25 Heure de la dernière connexion Long Facultatif
Code temporel Unix en millisecondes de l'epoch.
26 Numéro de téléphone Chaîne Facultatif

Si vous laissez une valeur facultative non spécifiée, veillez à toujours inclure un un champ vide pour la valeur. Un champ vide peut être n’importe quel nombre d’espace caractères.

Par exemple, la ligne suivante représente un compte utilisateur :

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

Un fichier de compte utilisateur JSON a le format suivant:

{
  "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
        },
        ...
      ]
    },
    ...
  ]
}

Remplacez PROVIDER_ID par l'une des valeurs suivantes :

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