繁体   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