通过API转发身份验证令牌

时间:2018-10-04 05:19:03

标签: firebase firebase-realtime-database firebase-authentication

我的团队正在从直接读写功能迁移到我们的移动和Web应用程序的Firebase RTDB,并从其迁移到更经典的服务器/客户端模型。

这样做,我想看看是否有一种机制可以通过我们的服务器API将用户Firebase身份验证令牌转发到对数据库的调用中。这样做的目的是使我的安全规则可以应用于用户请求的auth令牌,而无需编写层来管理用户数据访问,而不必依靠firebase来为我处理它。

1 个答案:

答案 0 :(得分:1)

因此,您希望Firebase在用户访问数据之前进行检查。在这种情况下,您可以使用如下所示的firebase getIdToken

firebase.auth().currentUser.getIdToken(); // which returns promise.

将此令牌附加到http标头,然后在API调用中按如下所示检查令牌

const validateFirebaseIdToken = (request, response, next) => {
cors(request, response, () => {
    if (!request.headers || !request.headers.authorization) {
        return response.status(403).send("Sorry! You're not authorized to access this url");
    }
    const token = request.headers.authorization.split('Bearer ')[1];
    return firebase.auth().verifyIdToken(token).then(decodedId => {
        request.user = {};
        request.user.uid = decodedId.uid;
        return next();
    }).catch(error => {
        console.log(error);
        return response.status(403).send("Sorry! You're not authorized to access this url");
     });
  });
}

这是您需要通过API调用检查Firebase ID令牌的方式。希望这能给您一个想法。随时问您是否有任何疑问