Firebase身份验证:uid vs. getToken(再次...)

时间:2019-08-27 16:17:43

标签: firebase firebase-authentication angularfire

请参阅文档,并遵循以下原则,但

如果我得到用户的 uid 是因为Firebase在身份验证后将其交给了我,那还不足以证明该特定用户实际上已经在我的网站上得到了身份验证吗?

this.afAuth.auth.onAuthStateChanged((user) => {
   if (user) {
      // safe to use the user.uid to populate my users collection
   } else {
      // user.uid is logged out now
   }
});

这样我就可以在用户表中添加其他信息,如下:

  

myUsersCollection / [uid] / the_other_things:“这里有些东西”

帖子Why can't we use getUid() to authenticate with your backend server in firebase authentication似乎没有为我解决这个问题?

有人可以欺骗 onAuthStateChanged 事件来欺骗我吗?如果我确实从其他来源获得了uid,那么我当然也不知道。但是,只要我正确使用状态更改并信任Firebase身份验证, getToken()对证明身份验证有何帮助?

此外,即使 getToken()仍在docs中,它实际上是否已贬值?

提前感谢您的见解!

1 个答案:

答案 0 :(得分:0)

Firebase使用OAuth2,这是一种开放标准的授权协议,可为应用程序提供安全访问的能力。 OAuth使用授权令牌来证明消费者和服务提供商之间的身份。

Firebase UID不是私有的,不能保证用户的身份。当adb shell settings put global op_voice_recording_supported_by_mcc 1 返回Firebase用户时,您知道该用户已在为会话寿命设置的限制内被授权。尽管不太可能,但是会话状态可能会受到损害。这就是为什么对安全敏感的操作需要重新认证的原因,以及为什么ID令牌的寿命很短(通常为一小时)的原因。