You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取参数将MongoDB中ASP.net Identity用户迁移至Firebase认证

从AspNetCore.Identity.MongoDbCore迁移用户到Firebase认证的步骤

一、提取每个用户的Salt和密码哈希

AspNetCore.Identity.MongoDbCore v1.0.8复用ASP.NET Core Identity的默认密码存储格式,需从MongoDB用户文档的PasswordHash字段中解析所需值:

  • 解析操作:
    1. 将PasswordHash的Base64字符串解码为字节数组
    2. 跳过前4字节(格式标识位),接下来4字节为迭代次数(应与你指定的rounds=10000一致)
    3. 取后续16字节作为salt,转换为Base64字符串,即为导入JSON中需填写的salt值
    4. 剩余字节为密码哈希值,转成Base64字符串,作为passwordHash值

二、获取Hash Key

hash-key对应ASP.NET Identity项目生成HMAC_SHA256哈希时使用的密钥:

  • 若项目中显式配置了密码哈希密钥,直接取用该值
  • 若使用默认DataProtection配置,需从应用的DataProtection密钥环中提取对应HMAC密钥,可通过本地运行项目导出密钥或检查配置文件获取
  • 注意:如果原密码哈希用的是ASP.NET Identity默认的PBKDF2_SHA256算法,无需指定hash-key,需将Firebase导入的hash-algo改为PBKDF2_SHA256

三、生成Firebase导入用JSON文件

按Firebase要求格式创建用户列表JSON,单用户条目示例:

{
  "email": "user@domain.com",
  "passwordHash": "解析得到的密码哈希Base64字符串",
  "salt": "解析得到的salt Base64字符串",
  "emailVerified": true
}

四、执行Firebase CLI导入命令

确认参数匹配后,运行以下命令(替换文件路径和密钥值):

firebase auth:import ./users.json \
    --hash-algo=HMAC_SHA256 \
    --hash-key=你的哈希密钥字符串 \
    --salt-separator="" \
    --rounds=10000 \
    --hash-input-order=SALT_FIRST
  • salt-separator设为空字符串,因hash-input-order=SALT_FIRST表示直接拼接salt与明文密码,无额外分隔符

五、导入后验证

导入完成后用原用户密码尝试登录,若失败优先排查:

  • Salt和密码哈希的解析是否正确(可重新生成哈希对比验证)
  • Hash Key是否与原项目一致
  • 导入参数是否完全匹配(迭代次数、哈希算法、输入顺序)

内容的提问来源于stack exchange,提问作者acir23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:25:20