使用Firebase进行服务器端身份验证

Sto*_*kid 5 authentication server-side jwt firebase firebase-authentication

我在客户端设置了Firebase身份验证,在服务器端,我可以获取JWT令牌并解码帐户ID。但是,当我希望在生成页面之前在服务器上对每个页面加载进行身份验证时,该如何工作?

在登录或加载每个页面时,是否可以仅将最后一个JWT令牌存储到cookie中,以便可以在服务器上读取它们?除此之外,除了作为AJAX调用的每个链接之外,我不知道服务器还能如何获取该信息。

小智 3

这似乎是假设您使用 firebase auth 库来解码和验证服务器上的令牌而不是某种 JWT 解析库的唯一方法。

Firebase 管理包含用于解码和验证 id 令牌以及推断所有信息的方法。这可以防止 cookie 伪造,并使 firebase auth 成为用户是否经过身份验证的唯一事实来源。

例如(在节点中):

    const admin = require("firebase-admin");
    admin.initalizeApp({
        credential: admin.credential.cert(yourServiceAccountJsonHere),
        databaseURL: "http://YOURDATABASE.firebaseio.com/"
    });
    admin.verifyIdToken("usertokenasastring") //returns a promise
        .then(function(decodedToken){
            //process the decoded user token somehow
    });
Run Code Online (Sandbox Code Playgroud)

Firebase 调用您的数据库,并确保该用户已登录并且 JWT 中的所有其他信息都有意义,因此您不必担心实现任何类型的验证服务器端。