使用Firebase身份验证验证ID令牌

时间:2019-02-04 14:16:30

标签: node.js firebase firebase-authentication firebase-admin

我们正在开始开发Web应用程序,并正在考虑使用Firebase身份验证来处理我们的注册流程。但是,我们不确定ID令牌验证的工作方式。似乎可以用Firebase领域之外的令牌来验证用户。我们正在考虑在Google Kubernetes Engine上安装Node.js应用程序-据我所知,它不与Firebase身份验证集成。

Firebase对此example提供了有关如何使用Firebase Admin SDK验证ID令牌的信息:

// idToken comes from the client app (shown above)

admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

我的问题是Firebase是否必须调用服务器以验证每个用户请求上的ID令牌(这会增加延迟),或者是否缓存了验证令牌所需的加密密钥?很长时间–我就是这么认为的。

2 个答案:

答案 0 :(得分:4)

调用verifyIdToken时,Admin SDK使用公共密钥对令牌进行解码,并验证签名是否有效。它从Google的服务器上下载了此密钥,但已缓存了24小时(因为它几乎从未更改过)。验证令牌后,它将检查令牌是否已撤销,这需要再次调用Firebase身份验证服务器。每次调用verifyIdToken都会发生此请求。

您可以对照source code进行检查。

答案 1 :(得分:0)

我有一个类似的用例,其中我试图在我的应用程序中使用Firebase身份验证。用户登录后,idToken是否需要随每个请求一起传递(然后由每个请求的后端进行相应的验证)?

编辑:看起来Hiranya在这里回答了问题:Firebase Token Authentication using Django