You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Web应用的签名URL端点是否必须配置allUsers调用权限?

你当前遇到的403错误根本原因是:未授予allUsers调用权限的Cloud Function,默认要求请求携带Google Cloud IAM授权的访问令牌,而你前端传递的是Identity Platform的用户ID令牌,无法被Cloud Function的原生IAM校验逻辑识别,因此被拒绝,即使通过负载均衡转发也不会改变这一校验逻辑。

可行实现方案

方案1:直接使用Cloud Storage安全规则(最优,无额外中间层)

这是该场景下成本最低、维护量最小的实现方式,完全不需要部署Cloud Function做签名URL:

  • 你使用的Identity Platform和Firebase Auth底层能力互通,Cloud Storage原生支持识别Identity Platform签发的用户ID令牌
  • 为你的存储桶配置Firebase安全规则,示例规则如下:
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /user_uploads/{userId}/{allPaths=**} {
      allow write: if request.auth != null && request.auth.uid == userId;
    }
  }
}
  • 前端直接调用Cloud Storage的SDK,携带用户登录Identity Platform后获取的ID令牌即可直接上传文件,不需要额外调用接口获取签名URL
  • 完全不需要调整任何Cloud Function权限,也不涉及allUsers配置,符合企业域限制政策要求

方案2:通过Cloud IAP保护Cloud Function(适合必须使用签名URL的场景)

如果你业务逻辑必须通过Cloud Function生成签名URL(比如需要额外做业务校验、记录上传日志等),可以通过身份感知代理(IAP)解决403问题:

  • 保持当前负载均衡对接Cloud Function的架构不变,为负载均衡的后端服务开启IAP能力
  • 将IAP的身份提供商配置为你当前使用的Identity Platform实例
  • 在IAP的权限配置中,为需要访问的用户/用户组授予IAP-Secured Web App User角色,不需要为Cloud Function配置allUsers调用权限
  • 前端调用时在请求头中携带Identity Platform签发的ID令牌,IAP会自动完成身份校验,校验通过后会将请求转发到后端Cloud Function,不会再返回403错误

方案3:通过Firebase Hosting重定向转发请求(轻量备选)

如果不想使用IAP,也可以通过Firebase Hosting做请求转发:

  • 将Cloud Function配置为Firebase可调用函数,或者普通HTTP函数
  • 在Firebase Hosting的配置文件中添加重定向规则,将指定路径的请求转发到你的Cloud Function
  • 前端通过Firebase Hosting的域名请求接口,不需要直接调用Cloud Function的原生域名,因此不需要为Cloud Function配置allUsers权限,所有请求由Firebase Hosting边缘层转发,你可以在Cloud Function代码中继续使用Firebase Admin SDK校验请求携带的ID令牌

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:18:01