微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应用程序检查 Firebase 可调用函数上不必要的强制执行

如何解决应用程序检查 Firebase 可调用函数上不必要的强制执行

没有更改我的 Firebase 可调用函数代码中的任何内容,而是重新部署了它们,现在他们突然开始拒绝我的应用程序中的所有函数调用,并出现如下所示的错误。在我准备好进行所需的更改之前,我不想使用 App Check。如何阻止我的可调用 (https.onCall) Firebase 函数拒绝无效的应用检查,而只拒绝无效的身份验证?

Failed to validate AppCheck token. FirebaseAppCheckerror: Decoding App Check token Failed. Make sure you passed the entire string JWT which represents the Firebase App Check token.
    at FirebaseAppCheckerror.FirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:44:28)
    at FirebaseAppCheckerror.PrefixedFirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:90:28)
    at new FirebaseAppCheckerror (/workspace/node_modules/firebase-admin/lib/app-check/app-check-api-client-internal.js:187:28)
    at /workspace/node_modules/firebase-admin/lib/app-check/token-verifier.js:82:19
    at processticksAndRejections (internal/process/task_queues.js:97:5) {
  errorInfo: {
    code: 'app-check/invalid-argument',message: 'Decoding App Check token Failed. Make sure you passed the entire string JWT which represents the Firebase App Check token.'
  },codePrefix: 'app-check'
} 

Callable request verification Failed: AppCheck token was rejected. {"verifications":{"app":"INVALID","auth":"VALID"}}

由于应用检查无效而拒绝所有请求的代码非常简单:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
exports.example = functions.https.onCall((data,context) => {
  return "test";
}

Package.json:

"engines": {
    "node": "12"
},"main": "index.js","dependencies": {
  "firebase-admin": "^9.10.0","firebase-functions": "^3.14.1"
},

解决方法

我也有同样的经历。文档说你应该像这样检查[1]:

  if (context.app == undefined) {
    throw new functions.https.HttpsError(
        'failed-precondition','The function must be called from an App Check verified app.')
  }

但是,根据我的经验,情况并非如此,当您将 App Check 添加到您的应用时,App Check 会立即开始执行。

编辑:

此外,即使没有对我的代码进行任何检查,只要我调用我的一个函数,我就可以在日志中看到这一点:

Callable request verification passed {"verifications":{"auth":"VALID","app":"VALID"}}

所以看起来 App Check 是自动发生的,至少在 Callable Functions 中是这样。如果您想在其中一个函数中绕过 AppCheck,您可能想尝试使用 HTTP 函数(不是 Callable)。

[1] 来源 https://firebase.google.com/docs/app-check/cloud-functions

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?