【问题标题】:Migration of users from asp.net identity 2 to firebase authentication将用户从 asp.net 身份 2 迁移到 firebase 身份验证
【发布时间】:2021-03-15 09:01:08
【问题描述】:

我有一个 .net 应用程序,它使用 asp.net 身份 2 来验证用户身份。用户使用用户名/密码登录,成功登录后会生成访问令牌 (JWT) 和刷新令牌。

用于散列密码的 asp.net 2 的默认实现可以在 here 找到。 它使用带有随机盐的key derivation function 来生成哈希。盐包含在 kdf 的输出中。因此,最终生成的密码哈希由第一个空字节组成,然后是 16 字节的盐,然后是 32 字节的哈希密码。从以上参考我们可以看出,使用的算法是 HMAC-SHA1 迭代 1000 次和用户的原始密码 作为 HMAC 的密钥 (see here)。

我正在考虑迁移到Firebase Authentication,并且我想将我现有的用户迁移到那里。基于Firebase documentation,在迁移 HMAC_SHA1 散列密码时,我们必须包括密码散列、盐和 hmac 密钥。此外,我们无法提供 sha1 哈希算法 (see here) 使用的迭代次数。

所以,问题是:我们如何知道 hmac 的密钥,因为它是用户的原始密码?这是 asp.net 身份 2 的默认实现。由于我们永远无法知道它,这意味着我们无法将用户迁移到 firebase 身份验证?

另外,即使我们知道密钥,我们如何将 sha1 算法的 1000 次迭代在有效载荷中提供给 Firebase?只有当哈希算法是 sha1 没有 hmac see here 时才能做到这一点。

【问题讨论】:

    标签: firebase-authentication asp.net-identity-2


    【解决方案1】:

    我可以帮助解决问题的火力部分。 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,您需要使用用于散列base64 格式密码的密钥 对于rounds,使用 1000 进行您指定的迭代 对于hash-input-order,您需要使用SALT_FIRST

    现在你可以在哪里拿到钥匙,也许其他人可以插手。

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2021-08-26
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多