【问题标题】:Using HttpsCallable with service credentials将 HttpsCallable 与服务凭据一起使用
【发布时间】:2020-04-04 06:23:19
【问题描述】:

我正在使用一组 HttpsCallable 函数,客户端使用这些函数在后端安全地调用事物。我现在发现自己处于后端(另一个云函数)需要触发一些相同操作的情况,所以理想情况下我会从另一个云函数调用 HttpsCallable。

可调用库在 firebase-admin 中不可用,我假设这是因为它正在执行用户身份验证。

是否有可能以某种方式解决这个问题?也许我可以使用服务凭证来识别自己并使用普通的 HTTP 云函数接口手动提供正确的有效负载?

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    如果您需要在没有可用客户端库的环境中调用可调用函数,您可以编写符合protocol specification for callable functions 的自己的代码。它基本上只是一个带有特定标头和请求正文的 POST 请求。如果您没有为最终用户提供 ID 令牌,则身份验证将很困难。服务帐户根本没有帮助 - 仅为 Firebase Auth 用户提供身份验证。

    在某些情况下,最好使用第二个更易于调用的 HTTP 函数,并通过某些模块与可调用函数共享代码,但这取决于您。

    如果您希望将对 HTTP 函数的访问限制为服务帐户凭据,则必须使用 Google Cloud 文档进行漫长的理解和 configuring IAM permissions Cloud Functions 的了解。 Firebase CLI 还部署了具有“allUsers”访问权限的函数,以便移动和 Web 客户端可以访问它们 - 它并不能帮助您保护内部使用的函数。

    【讨论】:

    • 谢谢,我最终以简单的方式解决了这个问题,将共享代码抽象化并重用。根据您的信息,我怀疑您还可以创建一个特殊的 firebase 用户并代表该用户在云功能中登录,然后使用该令牌使用协议调用 httpsCallable ,但这一切似乎都不值得:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2017-06-27
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多