使用 Firebase 身份验证验证 ID 令牌
Verifying ID tokens with Firebase Authentication
我们正在开始开发网络应用程序,并考虑使用 Firebase 身份验证来处理我们的注册流程。但是,我们不确定 ID 令牌验证的工作原理。似乎可以使用 Firebase 领域之外的令牌来验证用户。我们正在考虑在 Google Kubernetes Engine 上有一个 Node.js 应用程序——据我所知,它没有与 Firebase 身份验证集成。
Firebase 提供了关于如何使用 Firebase Admin SDK 验证 ID 令牌的example:
// 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 令牌——这会增加延迟——或者它是否缓存验证令牌很长一段时间 – 这就是我认为它的工作方式。
当您调用 verifyIdToken
时,Admin SDK 使用 public 密钥解码令牌并验证签名是否有效。它从 Google 的服务器下载这个密钥,但它被缓存了 24 小时(因为它几乎从不改变)。验证令牌后,它会检查令牌是否已被撤销,这需要再次调用 Firebase 身份验证服务器。每次调用 verifyIdToken
.
都会发生此请求
您可以对照 source code 进行检查。
我有一个类似的用例,我试图在我的应用程序中使用 Firebase 身份验证。 idToken是否需要在用户登录后随每个请求一起传入(然后在每个请求上由后端进行相应验证)?
编辑:看起来 Hiranya 在这里回答了问题:Firebase Token Authentication using Django
我们正在开始开发网络应用程序,并考虑使用 Firebase 身份验证来处理我们的注册流程。但是,我们不确定 ID 令牌验证的工作原理。似乎可以使用 Firebase 领域之外的令牌来验证用户。我们正在考虑在 Google Kubernetes Engine 上有一个 Node.js 应用程序——据我所知,它没有与 Firebase 身份验证集成。
Firebase 提供了关于如何使用 Firebase Admin SDK 验证 ID 令牌的example:
// 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 令牌——这会增加延迟——或者它是否缓存验证令牌很长一段时间 – 这就是我认为它的工作方式。
当您调用 verifyIdToken
时,Admin SDK 使用 public 密钥解码令牌并验证签名是否有效。它从 Google 的服务器下载这个密钥,但它被缓存了 24 小时(因为它几乎从不改变)。验证令牌后,它会检查令牌是否已被撤销,这需要再次调用 Firebase 身份验证服务器。每次调用 verifyIdToken
.
您可以对照 source code 进行检查。
我有一个类似的用例,我试图在我的应用程序中使用 Firebase 身份验证。 idToken是否需要在用户登录后随每个请求一起传入(然后在每个请求上由后端进行相应验证)?
编辑:看起来 Hiranya 在这里回答了问题:Firebase Token Authentication using Django