使用Firebase匿名身份验证是否允许我保护Firestore数据和云功能,使其仅可由我的应用程序访问?

使用Firebase匿名身份验证是否允许我保护Firestore数据和云功能,使其仅可由我的应用程序访问?,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我正在创建一个没有任何理由让用户进行身份验证的移动应用程序。但是,我不希望其他人编写可以访问Firestore中我的数据的应用程序或网站,或者调用我的任何云功能 这是否意味着我需要实现匿名身份验证,然后编写访问规则,要求请求来自经过身份验证的用户 或者有没有一种方法可以编写规则,只说它们必须来自我的应用程序?我们遇到了同样的问题:一个部署给许多人的应用程序,它只需要能够读取firestore文档,但另一个管理应用程序(实际上只是一个网页)不会分发,这需要能够写入这些文档 我们的解决办法是: 使

我正在创建一个没有任何理由让用户进行身份验证的移动应用程序。但是,我不希望其他人编写可以访问Firestore中我的数据的应用程序或网站,或者调用我的任何云功能

这是否意味着我需要实现匿名身份验证,然后编写访问规则,要求请求来自经过身份验证的用户


或者有没有一种方法可以编写规则,只说它们必须来自我的应用程序?

我们遇到了同样的问题:一个部署给许多人的应用程序,它只需要能够读取firestore文档,但另一个管理应用程序(实际上只是一个网页)不会分发,这需要能够写入这些文档

我们的解决办法是:

  • 使用电子邮件和密码身份验证为数据库创建另一个用户。(我们不允许用户创建帐户——只允许使用我们创建的一个静态电子邮件/密码。)
  • 对常规应用程序仅使用匿名登录
  • 为“管理员应用程序”注册电子邮件/密码
  • 为每个文档添加如下规则:
我们将ionic与typescript结合使用,因此用户/密码登录的代码相对简单:

      firebase.initializeApp(credentials);
      firebase.auth()
        .signInWithEmailAndPassword('obfuscated@sorry.com', 'sorrynotshowingyouourpassword')
        .catch(err => {
          console.log('Something went wrong:', err.message);
        });


      firebase.auth().onAuthStateChanged((user) => {
        if (user) {
          // User is signed in.
          const isAnonymous = user.isAnonymous;
          const uid = user.uid;
          console.log('onAuthStatChanged: isAnon', isAnonymous);
          console.log('userid', user.uid);
        } else {
          console.log('onAuthStateChanged: else part...');
        }
      });

希望这能有所帮助。

我也有这个问题,你找到答案了吗?没有。很明显,Firebase可能会采取什么方法来实施这一点,都会向逆向工程开放。所以我怀疑答案更像是模糊的,但不是安全的。谢谢,但我不明白这是如何回答这个问题的。如何防止其他应用程序或脚本冒充您的匿名登录?据我所知,您不能。所以,我提出了我们的解决方案。哦,好吧。我想这没用。
      firebase.initializeApp(credentials);
      firebase.auth()
        .signInWithEmailAndPassword('obfuscated@sorry.com', 'sorrynotshowingyouourpassword')
        .catch(err => {
          console.log('Something went wrong:', err.message);
        });


      firebase.auth().onAuthStateChanged((user) => {
        if (user) {
          // User is signed in.
          const isAnonymous = user.isAnonymous;
          const uid = user.uid;
          console.log('onAuthStatChanged: isAnon', isAnonymous);
          console.log('userid', user.uid);
        } else {
          console.log('onAuthStateChanged: else part...');
        }
      });