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

同一账号登录多Firebase Cloud Firestore项目遇权限问题求助

问题

我采用Google身份提供商登录Firebase项目,期望通过同一身份提供商项目实现多Cloud Firestore登录,让用户可使用生产环境账号登录测试环境。参考相关方案后仍报错:"This operation is restricted to administrators only"。当前代码及测试环境OIDC配置如下,请问我遗漏了哪些配置或步骤?

DB / Firebase 初始化代码

constructor() {
  this.app = firebase.initializeApp(environment.firebase);
  this.database = firebase.initializeApp(environment.database, 'secondary');
}

DB 认证代码

private async initializeDb(firebaseUser) {
  const token = await firebaseUser.getIdToken();
  const provider = new firebase.auth.OAuthProvider('oidc.prod-login');
  const credential = provider.credential({ idToken: token });
  await this.firebaseService.database.auth().signInWithCredential(credential);
  return firebaseUser;
}

测试环境OIDC配置

  • name: prod-login
  • client ID: main-firebase-project-id
  • issuer: https://securetoken.google.com/main-firebase-project-id
解决方案

你遇到的错误源于测试环境Firebase项目的OIDC配置权限不足、跨项目Token验证规则不匹配等问题,以下是需要补充的关键配置和步骤:

  1. 生产环境配置测试环境为授权受众
    在生产环境Firebase控制台进入Authentication > 设置 > 授权域,添加测试环境项目的域名(格式:项目ID.firebaseapp.com)作为授权受众。同时在生产环境的ID Token验证设置中,允许测试环境客户端使用生产环境的ID Token完成认证。

  2. 解除测试环境OIDC提供商的管理员限制
    在测试环境Firebase控制台进入Authentication > 登录方法 > OIDC,找到配置的prod-login提供商,确认勾选允许用户使用此提供商登录,且未设置仅管理员可访问的限制。若需要客户端密钥,需确保密钥配置正确。

  3. 匹配ID Token的受众验证规则
    生产环境生成的ID Token的aud字段是生产环境项目ID,测试环境默认会验证aud是否等于自身项目ID,导致验证失败。你需要:

    • 要么在测试环境Firebase Auth的自定义规则中,允许aud为生产环境项目ID的Token通过验证;
    • 要么在生产环境生成Token时,通过getIdToken(true)或自定义Token生成逻辑指定测试环境为受众。
  4. 配置跨项目认证的IAM权限
    在生产环境IAM控制台中,为测试环境的Firebase服务账号添加Firebase Auth Token Verifier角色,确保测试环境具备验证生产环境ID Token的权限。

  5. 确认代码中Auth实例的正确性
    检查this.firebaseService.database.auth()是否确实指向secondary(测试环境)App对应的Auth实例,避免因实例混淆导致的权限校验错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:46:04