验证ID令牌与火力地堡认证
我们正在开始一个web应用程序的开发和正在考虑使用火力地堡认证来处理我们的注册流程的。但是,我们不确定的ID令牌验证的运作方式。这似乎可以验证其在火力地堡领域之外令牌的用户。我们正在考虑其在谷歌Kubernetes引擎使Node.js应用程序 - 因为据我所知,它不与火力地堡的认证集成。
火力地堡提供了关于如何验证使用火力管理员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
});
我的问题是火力地堡是否有做出它的服务器调用,以验证每个用户请求的ID令牌 - 这会增加延迟 - ,或者如果它缓存验证令牌很长一段时间所需要的密钥 - 这就是我认为它的工作原理。
回答如下:当你调用verifyIdToken
,Admin SDK中令牌的公共密钥解码和验证签名是有效的。它下载从谷歌的服务器上,该键,但它的缓存为24小时(因为它几乎没有变化)。验证令牌之后,它会检查令牌是否被撤销,这需要另一个调用火力地堡认证服务器。这个请求会为每个调用verifyIdToken
。
您可以检查此对source code。
verifyIdToken
fetchPublicKeys
verifyJWT
verifyDecodedJWTNotRevoked