ユーザーをCLIでエクスポートしました。
firebase auth:export my_users.json
ドキュメントに記載されているように、エクスポートされたファイルのパスワードはSCRYPTでハッシュする必要があります。
auth:exportコマンドは、Firebaseバックエンドで使用されるscryptアルゴリズムを使用してハッシュされたパスワードのみをエクスポートします。他のアルゴリズムを使用してハッシュされたパスワードを持つアカウントレコードは、空のpasswordHashフィールドとsaltフィールドでエクスポートされます。インポートされたユーザーが初めてサインインしたときにのみパスワードがscryptで再ハッシュされるため、プロジェクトでは、ファイルからユーザーレコードをインポートした後、他のアルゴリズムでパスワードがハッシュされる場合があります。
結果のハッシュキーフィールドとソルトフィールドは空ではありません。また、すべてのユーザーが少なくとも1回はサインインしたことも知っています。
さて、my_users.jsonをインポートしようとすると:
firebase auth:import --hash-algo=SCRYPT --rounds=1 my_users.json
次のエラーが発生します。
Must provide hash key(base64 encoded) for hash algorithm SCRYPT
しかし、auth:exportコマンドはパラメーターを受け取らなかったので、-hash-keyを何に設定する必要がありますか? .。
前もって感謝します
これで、FirebaseコンソールのGUIからハッシュキーとソルト情報を取得できるようになりました。何らかの理由でchrome)でシークレットモードに入る必要がありました(Firebaseサポートがこれを提案しました)。
その後、シークレットブラウザでFirebaseコンソールにログインできます。
(ユーザーのコピー先のインスタンスではなく、ユーザーのコピー元のFirebaseインスタンスを使用する必要があることに注意してください)
[認証]-> [ユーザー]をクリックし、[再読み込み]ボタンの横にある3つの縦のドットをクリックすると、ポップアップメニューが表示され、[パスワードハッシュパラメータ]という1つのメニュー項目が表示されます。
このメニュー項目をクリックすると、firebase auth:importコマンドを実行するために必要なすべての設定が表示されます。これが私が見るものです:
hash_config {
algorithm: SCRYPT,
base64_signer_key: <long string of random characters>,
base64_salt_separator: <short string of random characters>,
rounds: 8,
mem_cost: 14,
}
その後、コマンドを正常に実行できます
firebase auth:import ./users.json --hash-algo=scrypt --rounds=8 --mem-cost=14 --hash-key=<long string of random characters> --salt-separator=<short string of random characters>
Firebaseのドキュメントを参照-「FirebaseAuthenticationPassword Hashing」: https://firebaseopensource.com/projects/firebase/scrypt/
パスワードハッシュパラメータの検索
Firebaseは、Firebaseプロジェクトごとに一意のパスワードハッシュパラメータを生成します。これらのパラメータにアクセスするには、Firebase Consoleの[認証]セクションの[ユーザー]タブに移動し、ユーザーテーブルの右上隅にあるドロップダウンから[パスワードハッシュパラメータ]を選択します。
残念ながら、cliを介してハッシュパラメータをフェッチするオプションはないようです。したがって、GUIが唯一の方法だと思います(Geoffrey Wallが 彼らの答え で述べたように)。