为什么我们不能在 firebase 身份验证中使用 getUid() 向您的后端服务器进行身份验证

2024-02-23

在此代码片段(firebase 文档)中,他们提到不要使用 user.getUid() 向后端服务器进行身份验证。请改用 FirebaseUser.getToken() 。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    String uid = user.getUid();
}
    
    
getUid() // A unique user ID, intended as the user's unique key across all providers.   
getToken() // The Firebase authentication token for this session.

我的要求是。

  1. 首先,我将使用 firebase 身份验证方法(电子邮件和密码)注册用户。
  2. 我将保存 String uid = user.getUid();注册成功后在我自己的后端服务器中。
  3. 用户信用信息显示用户余额作为密钥 user.getUid() 保存在我自己的后端服务器中。
  4. 用户使用电子邮件和密码登录并询问其余额。
  5. 我将从 firebase 获取 user.getUid() 并与我的记录匹配,如果找到匹配则将余额返回给用户。

他们说 getUid() 是唯一的用户 ID,但不要使用该值向后端服务器进行身份验证。

为什么这样?为什么我们不能使用 getUid() 向您的后端服务器进行身份验证?


uid 是用户的唯一标识符。因此,虽然它可以识别用户,但不会对用户进行身份验证。

一个简单的推论是,我的 Stack Overflow ID 是 209103。知道了这一点,您就可以识别我了。但要向 Stack Overflow 证明您是 Frank van Puffelen,需要您知道我的凭据。

用户的ID经常暴露在界面中。例如,如果您点击我的个人资料,您将看到我的 ID。这是识别我身份所必需的。如果您还使用相同的 ID 进行身份验证,那么曾经看过您个人资料的每个人都可以在网站上冒充您。就安全性而言,这不是一个好主意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我们不能在 firebase 身份验证中使用 getUid() 向您的后端服务器进行身份验证 的相关文章

随机推荐