python 中无法使用 firebase admin sdk 比较密码

unable to compare password using firebase admin sdk in python

我在 python

中使用 firebase 的 admin-SDK

我使用以下代码创建了一个新用户

user = auth.create_user(
        email=email,
        email_verified=False,
        password=password,
        display_name=name,
        disabled=False)

现在我创建了一个函数,它从用户那里获取 name 、_email id _ 和 password 并使用它的电子邮件 id 获取用户然后检查输入的详细信息是否正确。

def check_user(self, name, email, password):  # fixme compare password
    user = auth.get_user_by_email(email)
    if user.display_name == name and user.email == email:# add password comparision
        print('successful login')
        return True
    else:
        print('username or password incorrect')
    return False

我想比较输入的密码和存储的密码,但我无法比较,因为我无法访问密码,我只能使用 user.passwordHash 访问 passwordHash,使用 user.passwordSalt 访问 passwordSalt。

有什么办法可以找到密码的 passwordHash 或 passwordSalt 以便我比较哈希。

使用 Firebase 身份验证时的通常流程是您的用户使用直接使用 Firebase SDK 的客户端代码登录。所以在那种情况下, Firebase 本身将执行检查密码是否正确。

可以自己执行检查,但是您必须在代码中对用户的明文密码进行哈希处理,然后比较存储的哈希值和计算的哈希值,本质上是重复Firebase 已经做了什么。 Firebase 使用 modified version of scrypt 来加密密码。

有一个名为 pyrebase 的库。您可以使用它来模拟服务器中的客户端。启动 pyrebase 对象后,只需使用 sign_in_with_email_and_password(email, password)

GitHub url: https://github.com/thisbejim/Pyrebase

python 的 Firebase Admin SDK 不提供比较密码的方法。但是,有一个解决方案可以确认用户的真实性。

这可能会有帮助