【问题标题】:Firebase Cloud Functions Secure HTTPS Endpoints with API keyFirebase Cloud Functions 使用 API 密钥保护 HTTPS 端点
【发布时间】:2018-10-30 19:58:45
【问题描述】:

我看过几个地方,包括 post 和 firebase 面板

有没有办法使用这些 api 来保护这些端点,使用您为每个使用您的云功能的客户创建的 api 密钥?

我可以阻止每个对浏览器密钥施加限制的人,但我想创建一个新的 api 密钥,并将其用作为各种客户端验证我的端点的一种方式。

创建一个新的 api 密钥并使用 that as a parameter in my query 不起作用(如果我做错了什么,现在不要这样做)

有没有办法做到这一点?

【问题讨论】:

    标签: firebase http authentication google-cloud-functions


    【解决方案1】:

    选项 1:在函数内处理身份验证

    https://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint

    调整以上内容以使用存储在 firestore 中的客户端/密钥


    选项 2:使用API Gateway

    上述网关可能最适合您的用例,因为前两个可以让您将所有内容保留在 Google 中,尽管复杂性/成本更高——希望 Endpoints 能很快获得对功能的支持。 Azure 意味着在 Google 之外拥有您的部分架构,但看起来是实现您的目标的一种简单方法(您的 google 云/firebase 功能的每个客户端的 api 密钥)

    这里有一个很好的实现 Azure API 管理的演练:

    https://koukia.ca/a-microservices-implementation-journey-part-4-9c19a16385e9

    【讨论】:

      【解决方案2】:

      没有实现您所追求的目标,就 firebase 和 GCP 而言,您的客户是您的特定业务问题。

      您可以解决这个问题的一种方法(使用提供的少量信息);

      1. 您需要在某个地方存储客户端列表及其 API 密钥(我会使用 firestore)

      2. 对于您要使用特定于客户端的 API 密钥保护的端点,您可以检查以确认标头是否存在并且也存在于您的 Firestore 客户端记录中。

      注意事项:

      1. 根据您的预期流量负载和您将添加的 Firestore 读取数量,您可能需要仔细检查这种解决方案是否适合您的预算。
      2. API 密钥类型的解决方案是您必须选择的唯一选择吗?您可能会使用https://github.com/firebase/firebaseui-web 并在您的函数中进行用户检查,而无需额外的数据库读取。如果你沿着这条路走,大多数用户注册/电子邮件/帐户创建逻辑都准备好了。 https://firebase.google.com/docs/auth/web/password-auth#before_you_begin

      很想知道其他一些 Firebase 用户的建议。

      【讨论】:

        猜你喜欢
        • 2021-04-28
        • 1970-01-01
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-17
        • 2020-06-01
        • 2020-03-15
        相关资源
        最近更新 更多