javascript - Firebase 可调用函数 : Permission settings to restrict calling

标签 javascript python firebase google-cloud-functions

我在nodejs和python中编写了一些可调用函数,并且从客户端代码调用时两者都工作正常。但是,当前权限为Cloud Functions Invoker这些可调用函数设置为 allUsers 。正在删除allUsers将导致函数抛出 UNAUTHENTICATED .

我希望这些可调用函数只能从我的 firebase 应用程序调用,但我从中了解到 post这种限制是不可能的。那么,限制/限制仅从经过身份验证的用户调用可调用函数以维护安全性的最佳实践是什么?

我已经完成了必要的身份验证检查(我希望这些足以)以确保他们是我的应用程序上经过身份验证的用户,即:

//For python
authorization = request.headers.get('Authorization')
id_token = None

if authorization and authorization.startswith('Bearer '):
    id_token = authorization.split('Bearer ')[1]
else:
    json_abort(401, message="No authorization found")

try:
    decoded_token = auth.verify_id_token(id_token)
except Exception as e: 
    json_abort(403, message="Invalid authorization")

//For nodejs
module.exports = functions.https.onCall((data, context) => {
    let auth = context.auth

    if (!auth) throw new functions.https.HttpsError("permission-denied", "Caller is not authenticated.")
    //...
})

我能做的就是这些吗?我可以在资源权限级别实现其他任何事情,而不是离开 Cloud Functions InvokerallUsers

最佳答案

So what is the best practice in restricting/limiting callable functions to be called only from my authenticated users to maintain security?

您无法阻止任何客户端调用该函数(当您允许“allUsers”时,HTTP 端点始终是公开的),因此您必须在函数内部检查客户端是否提供了身份验证凭据。您显示的用于检查 context.auth 的代码应该可以正常工作。

关于javascript - Firebase 可调用函数 : Permission settings to restrict calling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62789382/

相关文章:

python - 在类中使用 'for' 循环迭代字典

javascript - Firebase 函数不记录 "console.log()"语句

android - NPE on FirebasePerformance.isPerformanceCollectionEnabled() with Firebase Performance and AndroidX

javascript - 带有两个滑动侧面板的布局

javascript - 是否可以在 Tempus Dominus bootstrap 4 datetimepicker 中将 minDate 和 maxDate 设置为同一天?

python - 什么是 R 中不同颜色的 "good"调色板? (或 : can viridis and magma be combined together? )

firebase - 什么用例有 FirebaseUser 的 reload() 功能?

javascript - 查看更多按钮评论显示和隐藏过去的列表

javascript - 如何使用 javascript 更改视频标签海报属性?

python - lightgbm中评估指标和评估函数的区别