【问题标题】:Do Firebase Cloud Functions callable functions enforce end user authentication?Firebase Cloud Functions 可调用函数是否强制执行最终用户身份验证?
【发布时间】:2020-10-16 02:28:20
【问题描述】:

我想知道是否可以单独使用 Firebase Cloud Functions 调用函数,例如:

exports.myCallableFunction = functions.https.onCall((data, context) => { 
  //... 
});

它们本身是安全的,或者我需要在它们内部实现一些代码以确保只有调用它们的经过身份验证的用户才能从中获得一些东西。据我了解,它是通过 API 端点调用的,所以我有点担心每个人都能调用它。

如果需要实现一些逻辑,什么逻辑可以确保它是安全的?

【问题讨论】:

    标签: javascript firebase-authentication google-cloud-functions


    【解决方案1】:

    如果您只希望经过身份验证的用户能够调用您的函数,那么可调用函数本身在这方面并不“安全”。您将需要添加代码以确保用户已通过身份验证,然后在未通过时决定您要发送的内容。

    exports.myCallableFunction = functions.https.onCall((data, context) => {
        if (!context.auth) {
            throw new functions.https.HttpsError("unauthenticated", "You must be authenticated");
        }
    
        // continue here if they are auth'd
    });
    

    【讨论】:

    • 支持内置身份验证强制的任何机会/时间表(而不是必须编写自定义代码)?因为在这种情况下,该函数实际上是通过未经身份验证的请求调用的;哪种方式违背了首先设置身份验证的意义(与基于 AWS Cognito 的 Lambda 身份验证不同)
    【解决方案2】:

    任何人都可以调用可调用的云函数,但您可以通过检查context.auth 轻松检查用户是否已登录(以及他们是谁)。

    我建议阅读有关 [callable cloud functions] 的文档,其中包含有关 authentication 的部分。

    【讨论】:

      猜你喜欢
      • 2020-03-14
      • 1970-01-01
      • 2019-09-27
      • 2020-01-16
      • 2019-04-04
      • 2020-09-17
      • 1970-01-01
      • 2019-07-22
      • 2019-12-31
      相关资源
      最近更新 更多