【问题标题】:Using Firebase for server side authentication使用 Firebase 进行服务器端身份验证
【发布时间】:2017-03-20 22:55:00
【问题描述】:

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

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

【问题讨论】:

  • 如果您希望对来自服务器的每个负载进行身份验证,您应该在每次调用时将 JWT 从客户端传递到服务器。将 JWT 存储在 cookie 中就可以实现这一点。
  • Firebase 现在有“firebase 会话 cookie”:firebase.google.com/docs/auth/admin/manage-cookies

标签: authentication firebase jwt firebase-authentication server-side


【解决方案1】:

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

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

例如(在节点中):

    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
    });

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

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 2016-10-12
    • 2021-12-05
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2022-08-16
    相关资源
    最近更新 更多