firebase - 将 drupal 用户迁移到 Firebase 身份验证
问题描述
我正在尝试将用户从 Drupal 8 迁移到 firebase auth。
我已尝试按照https://firebase.google.com/docs/auth/admin/import-users#import_users_with_md5_sha_and_pbkdf_hashed_passwords上的说明进行操作。
用户导入成功,但我尝试登录时密码不起作用。 反转Drupal代码后,我感觉firebase提供的sha512散列机制与drupal所做的确定步骤不同密码的哈希值。
一个用户的drupal数据库中的数据(这是dev数据,不是真实用户)密码:$S$EF//ORKHHZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68
通过阅读drupal代码,我确定了以下内容
$S$ = SHA512
"E" = 16 发
"F//ORKH" = 盐
“HZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68”=哈希
导入的相关 Go 代码:
users := []*auth.UserToImport{
(&auth.UserToImport{}).
UID("00048ebbb178d47f674f48485205235c").
Email("CPIZFTPX@mailinator.com").
PasswordHash([]byte("HZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68")).
PasswordSalt([]byte("F//ORKH")),
}
h := hash.SHA512{
Rounds: 16,
}
result, err := client.ImportUsers(context.Background(), users, auth.WithHash(h))
所以......说了这么多,我认为问题在于drupal代码将实际存储在数据库中的字符串截断为55个字符。crypt
您可以在 drupal 代码(上面粘贴的 url)中方法的最后一行看到这一点。
有没有人成功地将drupal 8用户迁移到firebase?如果是这样,我很想知道我缺少什么步骤。如果不是这样,对我的发现的一些确认将有助于我的理智。
解决方案
从这个角度来看,它看起来不像是 SHA。大多数系统将 SHA 的字节编码为字符串以便于存储。查看您发布的 Drupal 代码文件,看起来他们对 SHA 进行了 base64 编码。
在这种情况下,我认为它需要在被传递到之前被解码PasswordHash
尝试添加:
decoded, err := base64.StdEncoding.DecodeString("HZKG9L4UEUUNycm0v5HatfjQxkxbKn19BiYMsPxi3u68")
然后只需将其传递到您的其余代码中:
users := []*auth.UserToImport{
(&auth.UserToImport{}).
UID("00048ebbb178d47f674f48485205235c").
Email("CPIZFTPX@mailinator.com").
PasswordHash(decoded).
PasswordSalt([]byte("F//ORKH")),
}
h := hash.SHA512{
Rounds: 16,
}
result, err := client.ImportUsers(context.Background(), users, auth.WithHash(h))
我不知道密码是什么,否则我会在我的 firebase 帐户上对其进行测试。
推荐阅读
- python - conda-forge 能否在安装 MKL 版本的软件包时优先于默认值?
- spring - 异常异常。无法获取当前线程的事务同步会话
- python - python:相同numpy数组的c和fortran排序;时序分析
- share - 嵌入式 Compact 2013 SMB V 2.0 或 V 3.0
- swift - Publisher 中的 Publisher 不会触发 SwiftUi 重新渲染
- javascript - 使用 Array.reduce() 从 fetch Promise 中提取 JSON 数据
- laravel - laravel5.8公共文件夹下的奇怪php文件
- python - 在另一个递归中递归 - 它仍然可以称为整体递归吗?
- nuxt.js - Nuxt - 从另一个文件夹获取图像
- python - 如何为 ` 中的每个链接刮取 xpath
- `?