将Drupal用户迁移到Firebase身份验证

时间:2019-06-17 04:57:20

标签: firebase drupal firebase-authentication drupal-8

我正在尝试将用户从Drupal 8迁移到Firebase身份验证。

我尝试按照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” =哈希

这是从这里获取的:https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Password%21PhpassHashedPassword.php/class/PhpassHashedPassword/8.7.x

与导入相关的Go代码:

crypt

所以...说了这么多,我认为问题是drupal代码将实际存储在数据库中的字符串截断为55个字符。您可以在drupal代码的<embed src='video.mp4' width='300px'></embed> 方法的最后一行(上面粘贴的URL)中看到这一点。

有没有人成功将drupal 8用户迁移到Firebase?如果是这样,我很想知道我缺少什么步骤。如果没有,对我的发现进行一些确认将有助于我的理智。

1 个答案:

答案 0 :(得分:2)

从这个角度看,看起来好像不是SHA。大多数系统将SHA的字节编码为字符串,以便于存储。查看您发布的Drupal代码文件,看起来它们是base64编码的SHA。

在这种情况下,我认为在传递到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))

然后将其传递给您的其余代码:

{{1}}

我不知道密码是什么,否则我将在我的Firebase帐户上对其进行测试。