El comando
auth:import
permite importar cuentas de usuario a proyectos de Firebase.El comando
auth:export
exporta cuentas de usuario a archivos JSON y CSV.
Parámetros de hash de contraseña
Para determinar los parámetros de hash de contraseña que se usaron en tu proyecto, ve a la sección Autenticación > Usuarios de Firebase y haz clic en el ícono de tres puntos sobre la lista de usuarios. Verás un diálogo con una lista de parámetros de hash de contraseña que puedes usar con los comandos auth:import
y auth:export
:
hash_config {
algorithm: SCRYPT,
base64_signer_key: <...sensitive...>,
base64_salt_separator: <...sensitive...>,
rounds: 8,
mem_cost: 14,
}
Almacena estos valores con cuidado, ya que son sensibles. La mayoría de los proyectos de Firebase usan
SCRYPT
, una versión modificada del algoritmo de hash de scrypt,
que es la configuración predeterminada para proyectos nuevos.
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
Parámetros | |
---|---|
account_file | El archivo CSV o JSON que contiene las cuentas de usuario que se importarán. Consulta Formato de archivo. |
hash-algo | El algoritmo que se usa a fin de generar un hash para las contraseñas en el archivo de la cuenta de usuario. Es obligatorio para importar cuentas con campos de contraseña. Corresponde a uno de los siguientes valores: BCRYPT , SCRYPT , STANDARD_SCRYPT , HMAC_SHA512 , HMAC_SHA256 , HMAC_SHA1 , HMAC_MD5 , MD5 , SHA512 , SHA256 , SHA1 , PBKDF_SHA1 , PBKDF2_SHA256 . |
hash-key | La clave que se usa a fin de generar hash para las contraseñas. Es obligatoria para los algoritmos SCRYPT , HMAC_SHA512 , HMAC_SHA256 , HMAC_SHA1 y HMAC_MD5 .
Este argumento debe tener el formato de una string codificada en base 64. |
salt-separator | El separador de sal que se agregará a la sal cuando se verifique la contraseña. Es opcional para todos los algoritmos. Este argumento debe tener el formato de una string codificada en base 64. |
rounds | La cantidad de rondas que se usan a fin de generar hash para las contraseñas. Es obligatorio para los algoritmos SCRYPT , MD5 , SHA512 , SHA256 , SHA1 , PBKDF_SHA1 y PBKDF2_SHA256 . |
mem-cost | Este parámetro representa el costo de memoria obligatorio para el algoritmo SCRYPT , O el costo de CPU o memoria obligatorio para el algoritmo STANDARD_SCRYPT . |
parallelization | La paralelización del algoritmo de hash. Obligatorio para el algoritmo STANDARD_SCRYPT . |
block-size | El tamaño de bloque (normalmente es 8) del algoritmo de hash. Obligatorio para el algoritmo STANDARD_SCRYPT . |
dk-len | La longitud de clave derivada del algoritmo de hash. Obligatorio para el algoritmo STANDARD_SCRYPT . |
hash-input-order | El orden de la contraseña y la sal. Los valores posibles son SALT_FIRST y PASSWORD_FIRST . Esta marca se aplica a SHA512 , SHA256 , SHA1 , MD5 , HMAC_SHA512 , HMAC_SHA256 , HMAC_SHA1 y HMAC_MD5 . |
auth:export
firebase auth:export ACCOUNT_FILE --format=FILE_FORMAT
Parámetros | |
---|---|
account_file | El archivo CSV o JSON al que se realizará la exportación. Consulta Formato de archivo. |
file_format | Opcional. El formato del archivo que se exportará puede ser CSV o JSON. Si el nombre de archivo especificado en el parámetro account_file termina con .csv o .json , se usa ese formato y se ignora este parámetro.
|
Formato de archivo
El archivo de la cuenta de usuario puede tener el formato CSV o JSON.
CSV
Un archivo de cuenta de usuario CSV tiene el siguiente formato:
Número de columna | Descripción del campo | Tipo de campo | Comentarios |
---|---|---|---|
1 | UID | String | Obligatorio Este ID debe ser único entre todas las cuentas en tus proyectos de Firebase. Si importas una cuenta con un UID que ya existe, la cuenta se reemplazará. |
2 | Correo electrónico | String | Opcional |
3 | Correo electrónico verificado | Booleano | Opcional |
4 | Hash de contraseña | String | Opcional Una string codificada en base 64. Este campo requiere que el llamador tenga la función de editor o propietario. |
5 | Sal de contraseña | String | Opcional Una string codificada en base 64. Este campo requiere que el llamador tenga la función de editor o propietario. |
6 | Nombre | String | Opcional |
7 | URL de foto | String | Opcional |
8 | ID de Google | String | Opcional |
9 | Correo electrónico de Google | String | Opcional |
10 | Nombre visible de Google | String | Opcional |
11 | URL de foto de Google | String | Opcional |
12 | ID de Facebook | String | Opcional |
13 | Correo electrónico de Facebook | String | Opcional |
14 | Nombre visible de Facebook | String | Opcional |
15 | URL de foto de Facebook | String | Opcional |
16 | ID de Twitter | String | Opcional |
17 | Correo electrónico de Twitter | String | Opcional |
18 | Nombre visible de Twitter | String | Opcional |
19 | URL de foto de Twitter | String | Opcional |
20 | ID de GitHub | String | Opcional |
21 | Correo electrónico de GitHub | String | Opcional |
22 | Nombre visible de GitHub | String | Opcional |
23 | URL de foto de GitHub | String | Opcional |
24 | Momento de creación del usuario | Largo | Opcional Marca de tiempo Epoch Unix en milisegundos. |
25 | Momento del último acceso | Largo | Opcional Marca de tiempo Epoch Unix en milisegundos. |
26 | Número de teléfono | String | Opcional |
Incluso si no especificas un valor opcional, asegúrate de incluir un campo vacío para ese valor. Un campo vacío puede ser una cantidad arbitraria de espacios.
Por ejemplo, la siguiente línea representa una cuenta de usuario:
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 archivo de cuenta de usuario JSON tiene el siguiente formato:
{ "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 }, ... ] }, ... ] }
Reemplaza PROVIDER_ID por uno de los siguientes valores:
google.com
facebook.com
github.com
twitter.com