Authentication 对承载令牌使用JSON Web令牌和Firestore支持

Authentication 对承载令牌使用JSON Web令牌和Firestore支持,authentication,authorization,jwt,google-cloud-firestore,bearer-token,Authentication,Authorization,Jwt,Google Cloud Firestore,Bearer Token,我想在Firestore中提供身份验证和授权支持,同时使用node.js应用程序与Firestore对话。用户通过URL(http.get和嵌入令牌)进行交互,并与node.js应用程序进行交互。该应用程序接受用户的一些输入,然后与firestore对话。客户端执行安全活动所需的访问令牌都嵌入在GET url中(id+访问令牌) 我这里有一个流,我想验证这个流是正确的还是我遗漏了什么?我找不到最明确的文件来指导我接下来的步骤 首先,在生成GET url之前,我生成JWT令牌部分: 用于生成JWT

我想在Firestore中提供身份验证和授权支持,同时使用node.js应用程序与Firestore对话。用户通过URL(http.get和嵌入令牌)进行交互,并与node.js应用程序进行交互。该应用程序接受用户的一些输入,然后与firestore对话。客户端执行安全活动所需的访问令牌都嵌入在GET url中(id+访问令牌)

我这里有一个流,我想验证这个流是正确的还是我遗漏了什么?我找不到最明确的文件来指导我接下来的步骤

首先,在生成GET url之前,我生成JWT令牌部分: 用于生成JWT令牌的函数如下所示: //生成JWT令牌

function getJWT() {
  var token = jwt.sign({
    exp: Math.floor(Date.now() / 1000) + (60 * 60) * constants.JWT_TOKEN_VALIDITY_HOURS,
    admin: '​XXXXXXX'
  }, constants.JWT_SECRET_TOKEN);
  return token;
}
不记名代币:​我在许多论坛上都听说,我可以在授权头中将此JWT web令牌作为“承载令牌”发送。这意味着firestore神奇地为我做了所有授权。还有什么我应该做的吗

1) 我相信我需要使用这个自定义JSON web令牌登录,并获得一个ID令牌。对吗? 从Firebase客户端SDK登录 使用Firebase Auth REST API将自定义令牌交换为ID令牌。 2) 然后,当我请求db访问时,我需要将这个ID令牌(不是JSON web令牌)传递给Cloud Firestore端点,作为设置为Bearer{YOUR_token}的授权头。。然后,您可以使用生成的ID令牌访问Firestore REST API:

想象一下,我还使用JSON访问令牌或从firestore获得的ID令牌将承载令牌嵌入到报头中

return this.http
.get(${OUR URL to app}, {
headers: new HttpHeaders().set('Authorization', Bearer ${JSON Web accessToken or ID Token})
})​
​用户单击具有此访问令牌的URL。他们同意条款和条件,然后我将他们重新引导到一个进行一些处理的云函数。​ 此JSON Web令牌被传递。我还验证了JWT令牌​ 使用此代码进行身份验证。​

function verifyToken(token) {
  try {
    var decoded = jwt.verify(token, constants.JWT_SECRET_TOKEN);
    var admin = decoded.admin;
    if (admin == "​XXXXXXXXX") {
      return true;
    }
    return false;
  } catch (err) {
    console.log(err);
    return false;
  }
}
​与此相关的任何示例都将非常有用。​

我使用的相关链接

最后 https.onCall的协议规范 在

可选:授权:持票人
发出请求的登录用户的Firebase身份验证用户ID令牌。后端会自动验证此令牌,并使其在处理程序的上下文中可用。如果令牌无效,请求将被拒绝。

这是我从谷歌得到的官方响应(但同样只有当用户有身份验证请求时才有效——我想这是一个有效的firebase用户),但我想知道的是,使用Json web令牌本身,我能实现这样的目标吗

只是想澄清一下,你需要一个Firebase ID令牌或一个Google令牌 要传递到云Firestore的标识OAuth 2.0令牌 端点作为授权标头设置为承载者{YOUR_TOKEN}

有关这方面的更多信息,请参阅以下链接:

  • 此外,我们没有任何与此相关的样本,但有一个 内部要求改进我们的REST文档。我不能 与您分享任何细节或时间表,以确定何时可以实现, 不过,您可以留意我们的发行说明或Firebase博客 对于我们可能有的任何更新


    我希望在stackoverflow我可能会得到更多与此相关的样品。但就目前而言,这就是我得到的一切。

    你有没有弄明白这一点?我已经阅读了Google/Firebase团队提供的各种教程和示例。似乎在XHR请求中添加授权:承载是将用户凭证发送到自定义后端的方式。所以你的流量对我来说是正确的。