2017-10-05 10 views
1

私は既存のアプリケーションをFirebase認証に移行する作業をしていました。すべてのユーザーがパスワードをリセットする必要がないように、ユーザーパスワードをFirebaseにインポートする必要があります。私はテストユーザーを設定してインポートしましたが、インポート後にFirebaseがユーザーのパスワードを拒否していることがわかりました。既存のユーザーをFirebase Authに移行する

私は、このJSONファイル提出しています:

{"users": [{"localId": "5e722b92dd784e7fa37b98f94790a87e", "email": "[email protected]", "emailVerified": true, "passwordHash": "6ZoYxCjLONXyYIU2eJIuAw==", "displayName": "Test"}]} 

を私は「塩」を追加しようとしました:上記に「」が、それは効果がなかったです。

私は、このコマンドを実行しています:正常に実行し、ユーザを追加し

firebase auth:import firebaseUsers.json --hash-algo=MD5 --rounds 0 --project projectname 

。しかし、ユーザは、ログインしようとすると、「提供されたパスワードは間違っているか、またはユーザにはパスワードが設定されていません」と表示されます。

「ラウンド」の値は、私がオンラインの例から取ったものです。私はまた、成功なしで1,4、および64を試しました。

このテストアカウントのパスワードはabc123です。私はABC123のBASE64 MD5はこのパイソンと6ZoYxCjLONXyYIU2eJIuAw ==であることが確認されました:確かに出力6ZoYxCjLONXyYIU2eJIuAwの==

は誰もが前にこのプロセスを経てハウズはできない

import hashlib 
import codecs 
import base64 
m = hashlib.md5() 
m.update("abc123".encode('utf-8')) 
print (base64.b64encode(codecs.decode(m.hexdigest(), 'hex')).decode()) 

は、私がやったものを見ますここで間違っている?

答えて

0

問題のコードの問題は、MD5の16進数をbase64に変換したことです。実際に行う必要があるのは、16進数の文字列をbase64に変換することです。したがって、上記の例を使用して

abc123のMD5は 'e99a18c428cb38d5f260853678922e03'です。 あなたがここ

「ZTk5YTE4YzQyOGNiMzhkNWYyNjA4NTM2Nzg5MjJlMDM =」

に等しい文字列としてBASE64にこれを変換する必要があるが、コードの修正版は疑問である:

m = hashlib.md5() 
m.update("abc123".encode('utf-8')) 
hexmd5 = codecs.decode(m.hexdigest(), 'hex') 
print(base64.b64encode(bytes(m.hexdigest(), 'utf-8')).decode()) 
関連する問題