代码之家  ›  专栏  ›  技术社区  ›  Mr. Blockchain

在Google App Engine上解码Firebase idToken

  •  0
  • Mr. Blockchain  · 技术社区  · 7 年前

    我的firebase用户正在向我的API服务器发送请求。我正在使用Google云端点中的安全规则验证它们。我在Google App Engine上提取他们的用户名,而不使用admin SDK。

    通常,Google建议通过此代码验证HTTPS请求的传入id令牌 在示例Firebase云函数代码中 :

      admin.auth().verifyIdToken(idToken).then((decodedIdToken) => {
        console.log('ID Token correctly decoded', decodedIdToken);
        req.user = decodedIdToken;
        return next();
      }).catch((error) => {
        console.error('Error while verifying Firebase ID token:', error);
        res.status(403).send('Unauthorized');
      });
    

    然而 在示例Google应用程序引擎代码中 ,Google在没有admin SDK的情况下解码令牌:

    let authUser = { id: 'anonymous' };
    const encodedInfo = req.get('X-Endpoint-API-UserInfo');
    if (encodedInfo) {
      authUser = JSON.parse(Buffer.from(encodedInfo, 'base64'));
    }
    

    我正在使用Google云端点来保护托管在Google App Engine上的API。我在云端点上设置了安全性,只允许firebase用户访问路由,但是,我只希望用户访问他们自己的数据,所以我需要解码他们的id令牌来检索他们的用户id。我想知道云端点是否在这里处理身份验证。 我是否需要admin SDK验证令牌?或者Google示例中的简单解码足够安全,因为云端点已经负责验证idToken了?

    1 回复  |  直到 7 年前
        1
  •  1
  •   saiyr    7 年前

    Admin SDK正在执行Endpoints代理在验证令牌时所执行的操作。代理只是传递已验证的令牌。只要Endpoints代理位于应用程序前面,您就可以解码 X-Endpoint-API-UserInfo 代币