auth:import и auth:export

  • Команда auth:import импортирует аккаунты пользователей в проекты Firebase.

  • Команда auth:export экспортирует аккаунты пользователей в файлы JSON и CSV.

Параметры хеширования пароля

Чтобы узнать параметры хеширования паролей, используемые в вашем проекте, перейдите в раздел Аутентификация > Пользователи консоли Firebase и нажмите на значок с тремя точками над списком пользователей. Вы увидите диалоговое окно со списком параметров хеширования паролей, которые можно использовать с командами auth:import и auth:export:

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

Эти значения конфиденциальны, поэтому храните их в надежном месте. В большинстве проектов Firebase используется SCRYPT – модифицированная версия алгоритма хеширования scrypt, которая задана по умолчанию для новых проектов.

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
Параметры
account_file CSV- или JSON-файл, содержащий аккаунты пользователей для импорта. Формат файла
hash-algo Алгоритм, используемый для хеширования паролей в файле аккаунта пользователя.
Требуется для импорта аккаунтов с полями паролей. Одно из следующих значений: BCRYPT, SCRYPT, STANDARD_SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1, HMAC_MD5, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1, PBKDF2_SHA256.
hash-key Ключ, используемый для хеширования паролей.
Требуется для алгоритмов SCRYPT, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 и HMAC_MD5. Этот аргумент должен быть отформатирован как строка в кодировке Base64.
salt-separator Разделитель соли, который будет добавлен к соли при проверке пароля.
Необязательный атрибут для всех алгоритмов. Этот аргумент должен быть строкой, закодированной в формате Base64.
раунды; Количество раундов, используемых для хеширования паролей.
Требуется для алгоритмов SCRYPT, MD5, SHA512, SHA256, SHA1, PBKDF_SHA1 и PBKDF2_SHA256.
mem-cost Этот параметр представляет собой стоимость памяти, необходимую для алгоритма SCRYPT, ИЛИ стоимость ЦП/памяти, необходимую для алгоритма STANDARD_SCRYPT.
параллелизация Параллелизация алгоритма хеширования.
Обязательный параметр для алгоритма STANDARD_SCRYPT.
block-size Размер блока (обычно 8) алгоритма хеширования.
Обязательный параметр для алгоритма STANDARD_SCRYPT.
dk-len Длина производного ключа алгоритма хеширования.
Обязательный параметр для алгоритма STANDARD_SCRYPT.
hash-input-order Порядок пароля и соли.
Возможные значения: SALT_FIRST и PASSWORD_FIRST. Этот флаг применяется к SHA512, SHA256, SHA1, MD5, HMAC_SHA512, HMAC_SHA256, HMAC_SHA1 и HMAC_MD5.

auth:export

firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Параметры
account_file CSV- или JSON-файл, в который нужно экспортировать данные. Подробнее о форматах файлов…
file_format Необязательно. Формат файла для экспорта: CSV или JSON.
Если название файла, указанное в параметре account_file, заканчивается на .csv или .json, используется этот формат, а параметр игнорируется.

Формат файла

Файл аккаунта пользователя может быть в формате CSV или JSON.

CSV

CSV-файл с аккаунтами пользователей имеет следующий формат:

Номер столбца Описание поля Тип поля Комментарии
1 Уникальный идентификатор Строка Обязательно
Этот идентификатор должен быть уникальным для всех аккаунтов в ваших проектах Firebase. Если вы импортируете аккаунт с UID, который уже существует, то аккаунт будет перезаписан.
2 Электронная почта Строка Необязательно
3 Адрес электронной почты подтвержден Логическое значение Необязательно
4 Хеш пароля Строка Необязательный
Строка в кодировке Base64. Для этого вызывающий должен иметь роль редактора или владельца.
5 Соль пароля Строка Необязательный
Строка в кодировке Base64. Для этого вызывающий должен иметь роль редактора или владельца.
6 Имя Строка Необязательно
7 URL фотографии Строка Необязательно
8 Идентификатор Google Строка Необязательно
9 Электронная почта Google Строка Необязательно
10 Отображаемое имя Google Строка Необязательно
11 URL фотографии Google Строка Необязательно
12 Идентификатор Facebook Строка Необязательно
13 Адрес электронной почты Facebook Строка Необязательно
14 Отображаемое название на Facebook Строка Необязательно
15 URL фотографии на Facebook Строка Необязательно
16 Идентификатор Twitter Строка Необязательно
17 Электронная почта Twitter Строка Необязательно
18 Отображаемое имя в Твиттере Строка Необязательно
19 URL фотографии в Твиттере Строка Необязательно
20 Идентификатор GitHub Строка Необязательно
21 Адрес электронной почты GitHub Строка Необязательно
22 Отображаемое название GitHub Строка Необязательно
23 URL фотографии на GitHub Строка Необязательно
24 Время создания пользователя Длинный Необязательный
Unix-время в миллисекундах.
25 Время последнего входа Длинный Необязательный
Unix-время в миллисекундах.
26 Номер телефона Строка Необязательно

Если вы не укажете необязательное значение, все равно добавьте пустое поле для него. Пустое поле может содержать любое количество пробелов.

Например, следующая строка представляет аккаунт пользователя:

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

Файл аккаунта пользователя в формате JSON имеет следующий вид:

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

Замените PROVIDER_ID одним из следующих значений:

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