如何使用Firebase Security Rules结合Firebase Auth保护Cloud Functions调用
关于Firebase Authentication保护Cloud Function调用的解答
你提到的需求完全可以实现,通过Firebase Authentication保护客户端对Cloud Function的调用是Firebase生态下的标准后端保护方案,完全适配你用Cloud Function作为Web应用后端访问Cloud SQL的使用场景。
具体实现方式
方案1:使用Firebase可调用云函数(推荐)
该方案由Firebase官方封装,无需手动处理令牌的传递和校验逻辑,开发成本最低:
- 客户端侧:用户完成Firebase Auth登录后,直接调用Firebase SDK提供的
functions.httpsCallable()方法触发云函数,SDK会自动将当前用户的有效ID令牌附加到请求中 - 云函数侧:使用
functions.https.onCall方法注册函数触发逻辑,可直接从回调参数的auth字段获取当前登录用户的身份信息:- 若请求未携带有效登录令牌,
auth字段为null,可直接返回权限拒绝响应 - 若令牌有效,可提取用户UID等身份信息,再执行后续的Cloud SQL读写操作
- 若请求未携带有效登录令牌,
方案2:手动校验HTTP触发云函数的身份令牌
如果你使用的是原生HTTP触发的Cloud Function,可手动完成身份校验流程:
- 客户端侧:用户登录后调用
user.getIdToken()获取当前用户的有效ID令牌,发起HTTP请求时将令牌放入Authorization请求头,格式为Bearer <ID令牌内容> - 云函数侧:引入Firebase Admin SDK,调用
auth.verifyIdToken()方法校验传入的令牌有效性:- 校验失败直接返回401未授权响应
- 校验通过后提取用户身份信息,再执行后续业务逻辑
内容的提问来源于stack exchange,提问作者Augusto
相关产品推荐
相关产品推荐

