簡體   English   中英

用戶從 asp.net 身份 2 遷移到 firebase 身份驗證

[英]Migration of users from asp.net identity 2 to firebase authentication

我有一個 .net 應用程序,它使用 asp.net 身份 2 來驗證用戶身份。 用戶使用用戶名/密碼登錄,並在成功登錄后生成訪問令牌 (JWT) 和刷新令牌。

asp.net 2 的默認實現密碼散列可以在這里找到。 它使用帶有隨機鹽的密鑰派生 function來生成 hash。 鹽作為 kdf 的 output 的一部分包含在內。 因此,最終生成的密碼 hash 由第一個空字節組成,然后是 16 個字節的鹽,然后是 32 個字節的散列密碼。 從上面的參考資料中我們可以看到,使用的算法是 HMAC-SHA1,迭代次數為 1000 次,用戶的原始密碼作為 HMAC 的密鑰( 參見此處)。

我正在考慮遷移到Firebase 身份驗證,並且我想將現有用戶遷移到那里。 根據Firebase 文檔,在遷移 HMAC_SHA1 散列密碼時,我們必須包含密碼 hash、salt 和 hmac 密鑰。 此外,我們無法提供 sha1 散列算法使用的迭代次數( 參見此處)。

所以,問題是:我們如何知道 hmac 的密鑰,因為它是用戶的原始密碼? 這是 asp.net 身份 2 的默認實現。由於我們永遠無法知道,這意味着我們無法將用戶遷移到 firebase 身份驗證?

另外,即使我們知道密鑰,我們如何將 sha1 算法的 1000 次迭代在有效載荷中提供給 Firebase? 僅當散列算法為 sha1 且沒有 hmac 時才能執行此操作, 請參見此處

我可以幫助解決問題的 firebase 部分。 SDK 似乎沒有提供 Firebase CLI 支持的所有功能。

如果你看看這里:

https://firebase.google.com/docs/cli/auth

firebase auth:import ACCOUNT_FILE    \
  --hash-algo=HASH_ALGORITHM         \
  --hash-key=KEY                     \
  --salt-separator=SALT_SEPARATOR    \
  --rounds=ROUNDS                    \
  --hash-input-order=HASH_INPUT_ORDER

我認為你可以定義你需要的一切。 對於hash-algo ,您需要使用HMAC_SHA1對於hash-key ,您需要使用用於 hash 的密鑰 base64 格式的密碼 對於rounds次,您指定的迭代使用 1000 對於hash-input-order ,您需要使用SALT_FIRST

現在你可以在哪里得到鑰匙,也許其他人可以插手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM