auth: importer et auth: exporter

  • La commande auth:import importe les comptes d'utilisateurs dans les projets Firebase.

  • La commande auth:export exporte les comptes d'utilisateurs vers des fichiers JSON et CSV.

Paramètres de hachage du mot de passe

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

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

Ces valeurs sont sensibles, stockez-les donc avec soin. La plupart des projets Firebase utilisent SCRYPT , une version modifiée de l'algorithme de hachage scrypt , qui est la valeur par défaut pour les nouveaux projets.

authentification:importation

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
fichier_compte Le fichier CSV ou JSON qui contient les comptes utilisateur à importer. Voir Format de fichier .
algorithme de hachage L'algorithme utilisé pour hacher les mots de passe dans le fichier du compte utilisateur.
Obligatoire pour importer des comptes avec des champs de mot de passe. Une des valeurs suivantes : BCRYPT , SCRYPT , STANDARD_SCRYPT , HMAC_SHA512 , HMAC_SHA256 , HMAC_SHA1 , HMAC_MD5 , MD5 , SHA512 , SHA256 , SHA1 , PBKDF_SHA1 , PBKDF2_SHA256 .
touche dièse Clé utilisée pour hacher les mots de passe.
Requis pour les algorithmes SCRYPT , HMAC_SHA512 , HMAC_SHA256 , HMAC_SHA1 et HMAC_MD5 . Cet argument doit être formaté sous forme de chaîne codée en base64 .
séparateur de sel Séparateur de sel qui sera ajouté au sel lors de la vérification du mot de passe.
Facultatif pour tous les algorithmes. Cet argument doit être formaté sous forme de chaîne codée en base64 .
Les manches Le nombre de tours utilisés pour hacher les mots de passe.
Requis pour les algorithmes SCRYPT , MD5 , SHA512 , SHA256 , SHA1 , PBKDF_SHA1 et PBKDF2_SHA256 .
coût mémoire Ce paramètre représente soit le coût mémoire requis pour l'algorithme SCRYPT OU le coût CPU/mémoire requis pour l'algorithme STANDARD_SCRYPT .
parallélisation La parallélisation de l'algorithme de hachage.
Requis pour l'algorithme STANDARD_SCRYPT .
taille de bloc La taille du bloc (normalement 8) de l'algorithme de hachage.
Requis pour l'algorithme STANDARD_SCRYPT .
dk-len Longueur de clé dérivée de l'algorithme de hachage.
Requis pour l'algorithme STANDARD_SCRYPT .
ordre d'entrée de hachage L'ordre du mot de passe et du sel.
Les valeurs possibles sont SALT_FIRST et PASSWORD_FIRST . Cet indicateur s'applique à SHA512 , SHA256 , SHA1 , MD5 , HMAC_SHA512 , HMAC_SHA256 , HMAC_SHA1 et HMAC_MD5 .

authentification:exportation

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Paramètres
fichier_compte Le fichier CSV ou JSON vers lequel exporter. Voir Format de fichier .
format de fichier Facultatif. Le format de fichier à exporter : soit CSV, soit 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 formaté 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 Requis
Cet identifiant 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 Email verifié Booléen Facultatif
4 Hachage de mot de passe Chaîne Facultatif
Une chaîne codée en base64. Ce champ nécessite que l'appelant ait le rôle d'éditeur ou de propriétaire .
5 Sel de mot de passe Chaîne Facultatif
Une chaîne codée en base64. Ce champ nécessite que l'appelant ait le rôle d'éditeur ou de propriétaire .
6 Nom Chaîne Facultatif
7 URL des photos Chaîne Facultatif
8 Identifiant Google Chaîne Facultatif
9 Courriel Google Chaîne Facultatif
dix Nom d'affichage Google Chaîne Facultatif
11 URL des photos Google Chaîne Facultatif
12 Facebook ID Chaîne Facultatif
13 Courriel Facebook Chaîne Facultatif
14 Nom d'affichage Facebook Chaîne Facultatif
15 URL des photos Facebook Chaîne Facultatif
16 Identifiant Twitter Chaîne Facultatif
17 Courriel Twitter Chaîne Facultatif
18 Nom d'affichage Twitter Chaîne Facultatif
19 URL des photos Twitter Chaîne Facultatif
20 Identifiant GitHub Chaîne Facultatif
21 E-mail GitHub Chaîne Facultatif
22 Nom d’affichage GitHub Chaîne Facultatif
23 URL des photos GitHub Chaîne Facultatif
24 Temps de création de l'utilisateur Long Facultatif
Horodatage Epoch Unix en millisecondes.
25 Heure de la dernière connexion Long Facultatif
Horodatage Epoch Unix en millisecondes.
26 Numéro de téléphone Chaîne Facultatif

Si vous laissez une valeur facultative non spécifiée, assurez-vous d'inclure toujours un champ vide pour la valeur. Un champ vide peut contenir 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