auth:import et auth:export

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

  • La commande auth:export exporte les comptes utilisateur vers des fichiers 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 Authentication > Users (Authentification > Utilisateurs) de la console Firebase, puis cliquez sur l'icône à trois points au-dessus de la liste des utilisateurs. Une boîte de dialogue contenant la liste des paramètres de hachage des mots de passe que vous pouvez utiliser avec les commandes auth:import et auth:export s'affiche:

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

Ces valeurs étant sensibles, veillez à les stocker avec précaution. La plupart des projets Firebase utilisent SCRYPT, une version modifiée de l'algorithme de hachage de chiffrement, qui est la valeur par défaut pour les nouveaux projets.

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
Paramètres
account_file Fichier CSV ou JSON contenant les comptes d'utilisateurs à importer. Consultez la section Format de fichier.
algorithme de hachage Algorithme utilisé pour hacher les mots de passe dans le fichier des comptes 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 les algorithmes SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 et HMAC_MD5. Cet argument doit prendre la forme d'une chaîne encodée 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 prendre la forme d'une chaîne encodée en base64.
rounds Nombre de séries utilisées pour hacher les mots de passe.
Obligatoire pour les algorithmes SCRYPT, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1 et PBKDF2_SHA256.
mem-cost Ce paramètre représente le coût de mémoire requis pour l'algorithme SCRYPT OU le coût de processeur/mémoire requis pour l'algorithme STANDARD_SCRYPT.
parallélisation Parallélisation de l'algorithme de hachage.
Obligatoire pour l'algorithme STANDARD_SCRYPT.
block-size La taille du bloc de l'algorithme de hachage (en général, 8).
Obligatoire pour l'algorithme STANDARD_SCRYPT.
dk-len Longueur de la clé dérivée de l'algorithme de hachage.
Obligatoire pour l'algorithme STANDARD_SCRYPT.
ordre-entrée-hachage L'ordre du mot de passe et du salage.
Les valeurs possibles sont SALT_FIRST et PASSWORD_FIRST. Cette option s'applique à SHA512, SHA256, SHA1, MD5, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 et HMAC_MD5.

auth:exportation

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Paramètres
account_file Le fichier CSV ou JSON vers lequel exporter. Consultez la section Format de fichier.
file_format 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 des comptes utilisateur peut être au format CSV ou JSON.

CSV

Un fichier de compte d'utilisateur CSV a le format suivant:

Numéro de colonne Description du champ Type de champ Commentaires
1 UID Chaîne Obligatoire
Cet identifiant doit être unique parmi tous les comptes de vos projets Firebase. Si vous importez un compte avec un UID existant, le compte sera écrasé.
2 Adresse 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 Salage 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.
6 Nom Chaîne Facultatif
7 URL de 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 Google Photos Chaîne Facultatif
12 ID Facebook Chaîne Facultatif
13 Adresse 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 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 de l'epoch en millisecondes.
25 Heure de la dernière connexion Long Facultatif
Code temporel Unix de l'epoch en millisecondes.
26 Numéro de téléphone Chaîne Facultatif

Si vous ne spécifiez pas de valeur facultative, veillez à toujours inclure un champ vide pour la valeur. Un champ vide peut comporter n'importe quel nombre de caractères d'espacement.

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