【问题标题】:Firebase AppCheck when working with Emulator on localhost在本地主机上使用模拟器时的 Firebase AppCheck
【发布时间】:2022-01-02 03:44:48
【问题描述】:

在使用 localhost 上的模拟器进行本地开发时,开发人员如何使用 Firebase App Check?您是否完全禁用了本地主机上的 App Check?或者您可以在本地模拟 App Check?

Firebase 在using App Check with a debug provider 上有一些说明,但其用例似乎是当您想在本地调试但在云中使用 GCP 的后端服务时。它看起来与针对模拟器进行开发无关。

在客户端中运行此命令会导致重新验证应用程序证明失败,并返回 403 响应 (PERMISSION_DENIED),可能是因为 localhost 未列为允许的域:

  const appCheck = firebase.appCheck();
  appCheck.activate(
    process.env.REACT_APP_FIREBASE_APP_CHECK_SITE_KEY,
    true,
  );

enforcing app check in callable functionscontext.app 在模拟器中运行时为undefined,因此请求将无法通过应用检查。

在本地禁用应用检查当然是一种选择,但想知道是否也有办法模拟应用检查。

【问题讨论】:

    标签: firebase emulation firebase-tools firebase-app-check


    【解决方案1】:

    我已经设置好了,但并非没有经过大量试验和错误。

    尝试将此 sn-p 添加到您对活动 appCheck 的调用上方。似乎它需要在激活 appCheck 之前出现。在我在活动调用之前移动调试 sn-p 之前,我遇到了同样的错误。不过,我使用的是网络版本 9……不确定这是否会有所不同。

    if (process.env.NODE_ENV !== 'production') {
      self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
    }
    
    const appCheck = firebase.appCheck();
    appCheck.activate(
      process.env.REACT_APP_FIREBASE_APP_CHECK_SITE_KEY,
      true,
    );
    

    这将向控制台打印一个令牌,该令牌需要添加到您的 Firebase 项目设置中。如您提供的链接中所述。

    您是否执行了这 2 个步骤,但仍然收到 403 响应?

    【讨论】:

    • 只是为了确认一下,您在使用 Firebase Emulator 后端进行测试时是否使用了它?换句话说,模拟器正在验证应用程序检查令牌的可调用函数之类的东西?我认为self.FIREBASE_APPCHECK_DEBUG_TOKEN 是在您想在本地测试您的客户端同时在 GCP 的云中使用后端时使用的。
    • 嗯...关于令牌可能是真的。我正在为我的后端使用 Cloud Run 上的 Express 应用程序,并在我的服务器和客户端上使用模拟器进行应用程序检查,同时在本地开发。我没有为模拟器上的可调用函数设置应用程序检查。我看到了这个,如果你还没有遇到它,我会分享它firebase.google.com/docs/app-check/cloud-functions 看起来一旦你在客户端上配置了 appcheck(没有得到 403),令牌应该显示在可调用的上下文对象上后台功能。它也应该适用于模拟器
    • 我明白你的意思,尽管它看起来不像你的用例所需要的。如果一切都在本地运行,为什么需要调试令牌?我仍在学习 appCheck 的所有细节,这似乎是一个很棒的功能。我想知道它是否可以取代我使用 CSRF 的需要。 appCheck 似乎在做同样的事情,甚至更多。
    • @BrianKernan 有了应用检查,我认为恶意网站不再可能使用 CSRF,因为该恶意网站不应该有办法构建应用检查令牌来发送带有恶意请求。至于调试令牌,我没有机会检查模拟器是否会验证生成的令牌。在云中的项目设置中注册令牌会很奇怪,因为模拟器不应该与云对话来验证这些事情。至于您评论中的链接,它与我在原始问题中包含的链接相同?。
    • @JohnnyOshika 当context.app 未定义时,您是否找到了解决模拟器功能失败问题的解决方案?这把我逼疯了。
    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2011-05-13
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多