是否可以信任HTTPS可调用Cloud Functions中的“上下文”?

时间:2019-05-10 06:51:22

标签: firebase-authentication google-cloud-functions

我正在使用Cloud Functions在服务器端处理对Cloud Firestore的读取/写入。云端功能由网络应用中的客户端使用HTTPS可调用功能触发。

使用HTTPS调用Cloud Functions时,从客户端调用“上下文”发送的参数将携带用户身份验证信息。例如,服务器上的Cloud Functions如下所示:

// Saves a message to the Firebase Realtime Database but sanitizes the text by removing swearwords.
exports.addMessage = functions.https.onCall((data, context) => {
  // ...
});

但是,由于客户端传递了context,并且客户端可以传递操纵的ID令牌,因此我是否需要始终执行ID令牌验证,然后才能信任并使用context.auth.uid之类的东西来与我的数据库进行交互?

我正在谈论的ID令牌验证是这样的:

// idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

基本上,我想知道Firebase在使用https调用传递context时是否自动执行ID令牌验证,因此我可以继续相信如果客户端操作了context,https调用将会由于令牌验证失败而失败。或者,我是否需要每次都在服务器上显式地进行一次手动ID令牌验证,以检查context的完整性,因为客户端可以使用浏览器的devtool或类似工具轻松插入可操纵的令牌。

1 个答案:

答案 0 :(得分:1)

是的,ID令牌自动包含在请求中并在功能中进行了验证。使用可调用函数时,无需编写代码来验证脚趾。