2016-11-04 253 views
1

我是一家擁有使用PHP和MySQL構建的應用程序的公司的開發人員。我們有大約300位用戶使用bcrypt對密碼進行散列處理,並存儲在用戶表中。我們正在尋找使用Angular和Firebase重建應用程序。將用戶身份驗證遷移到Firebase身份驗證

我的問題是,如何通過Firebase將這些用戶遷移並使用Firebase身份驗證。將配置文件信息遷移很容易,但我想確保用戶在登錄到新應用程序時仍然可以使用相同的電子郵件/密碼。

以下是我想到的一些方法。所有這些在我看來都很糟糕。

A)創建一個使用bcrypt的自定義認證系統,然後將散列複製過來。這不是我想要的,因爲我不想保留自定義身份驗證解決方案。 B)每當用戶登錄到舊系統時,從登錄字段獲取密碼,以明文形式存儲密碼,然後使用其電子郵件/密碼手動創建每個Firebase用戶。在我們切換到新應用之前,這需要100%的用戶登錄。這不太可能。這顯然是隱私的違反。我相信它打破了某種法律或標準。但它有效,這是最後的選擇。

C)每次用戶登錄到舊系統時,都會將明文形式的電子郵件/密碼發送到使用相同用戶/電子郵件自動創建新Firebase用戶的腳本。在我們切換到新應用之前,這需要100%的用戶登錄。這不太可能。與選項B相比,構建起來也更困難。

這些選項都不是很好。它們都有缺點。有更好的選擇嗎?如果沒有,在B和C之間,這是最合法/合乎道德的?選項B引誘我,因爲它非常簡單,但我不想違反任何法律或失去公司客戶的信任。

回答

5

[從火力地堡認證團隊]

火力地堡有一個更好的解決方案。 Firebase身份驗證服務可以批量導入您的現有用戶的散列算法(hmac-sha256,bcrypt,scrypt等)的批量導入密碼散列值。最終用戶只需使用其現有密碼進行簽名,並且您的應用將收到包含您上傳的相同user_id的Firebase令牌。沒有必要選擇A/B/C。

[更新11/19] Firebase command line tool 3.2.0支持將bcrypt散列密碼導入Firebase身份驗證服務。

+0

太棒了。是否有電子郵件通訊,我可以得到它會宣佈這一點,當它出來?另外,我們大概多長時間聊天?一個月?一年?十年? –

+0

有沒有什麼辦法可以獲得這個功能的某種測試版程序? –

+0

Firebase發行說明可在https://firebase.google.com/support/releases中找到。 –

3

披露:我在Auth0工作。

免責聲明:如果您真的將自己的想法放在從實際的角度來看使用Firebase,這可能無助於您,因爲它專注於Auth0提供的解決類似於您所描述問題的問題。 但是,從理論的角度來看,這可能對你有所幫助,所以我認爲值得分享。


足以與法律的東西...

檢查本指南爲一個完全詳細視圖如何Auth0 supports migrating users from your custom store to a hosted one

...將用戶從自定義數據庫連接自動遷移到Auth0。此功能可在您每個用戶登錄時一次性將您的用戶添加到Auth0數據庫,並避免要求您的用戶同時重置所有密碼。

該方法與您的選項C類似,但是需要保留舊系統的唯一方法是數據庫。每個人都會開始使用新的應用程序,並且登錄將以透明的方式爲用戶進行。根據Firebase提供的API,您可能最有可能實現類似的東西,這將是我的建議。

此外,你甚至不應該考慮任何包含手動步驟並且必須處理純文本密碼的進程。


最後一點,在重建您的應用程序使用外部認證服務,即使它不是Auth0出色的決定。 :)

身份驗證是一個難題,希望更多的應用程序開發人員不要浪費時間來解決與其應用程序解決的業務問題完全無關的問題。

+0

感謝您的出色答案,但我將堅持使用此項目的Firebase身份驗證。 –

+0

不用擔心,我會想我可能會幫助你從其他各方得到更快的響應時間...... :) –

+0

公平地說,你的競爭對手的回答沒有任何幫助 –

0

Firebase CLI最近添加了auth:import命令,該命令允許您將現有的用戶數據庫從CSV或JSON導入Firebase身份驗證。