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

使用Auth0令牌/Open ID Connect登录Firebase遇配置错误

问题:Auth0令牌登录Firebase Authentication提示“身份提供商配置未找到”

问题描述

尝试通过Auth0与Firebase Authentication联动登录以访问数据库:已实现从Angular应用跳转至Auth0完成登录并返回,能通过监听器获取Auth0的原始ID Token;随后调用Firebase Auth的signInWithCredential方法,结合该令牌与提供商信息尝试登录,已完成Auth0与Firebase Open ID Connect的关联配置,代码中使用OAuthProvider('oidc.test')。

期望结果

通过Auth0的Open ID Connect令牌成功登录Firebase Authentication。

遇到的错误

signInWithCredential方法返回错误:

OPERATION_NOT_ALLOWED : The identity provider configuration is not found.

技术栈

Angular 15、Firebase、TypeScript、Firebase Authentication Open ID Connect、第三方Auth0。

Angular组件代码示例

ngOnInit(): void {
  // Auth0监听器 - 获取令牌
  this.authService.idTokenClaims$.subscribe(data => {
    if (data) {
      this.token = data.__raw;
    }
  })

  // Auth0监听器 - 获取用户
  this.authService.user$.subscribe(user => {
    if (user) {
      setTimeout(() => {
        this.login();
      }, 1500);
    }
  })
}

logOut(): void {
  this.authService.logout({ logoutParams: { returnTo: document.location.origin } })
}

sso(): void {
  this.authService.loginWithRedirect();
}

login(): void {
  const auth = getAuth();
  const provider = new OAuthProvider('oidc.test');
  const credential = provider.credential({
    idToken: this.token,
  });

  signInWithCredential(auth, credential)
    .then((result) => {
      console.log(result);
    })
    .catch((error) => {
      console.log(error);
    });
}

控制台错误截图

错误截图

Firebase配置截图

Firebase配置截图

参考文档

  • Firebase手动登录流程(Open ID Connect)
  • Auth0 Angular快速开始

解决方法

  1. 匹配提供商ID
    代码中new OAuthProvider('oidc.test')的参数必须与Firebase控制台中配置的OIDC提供商ID完全一致。打开Firebase控制台的「Authentication > 登录方法 > OIDC提供商」,查看你创建的Auth0关联条目里的“提供商ID”,替换代码中的字符串。

  2. 验证Firebase配置正确性
    确认Firebase里OIDC提供商的授权端点、令牌端点、Issuer URL都与Auth0的对应地址一致,证书配置正确(Auth0的JWKS URL格式通常为https://<你的Auth0域名>/.well-known/jwks.json)。

  3. 检查ID Token有效性
    确保Auth0返回的ID Token的iss字段与Firebase配置中的Issuer匹配,令牌未过期,且签名算法符合Firebase要求(推荐使用RS256)。

  4. 优化代码逻辑
    原代码中的setTimeout延迟可能导致令牌未就绪,建议合并订阅逻辑,等令牌和用户信息都获取到后再执行登录:

    import { combineLatest } from 'rxjs';
    import { filter } from 'rxjs/operators';
    
    ngOnInit(): void {
      combineLatest([this.authService.idTokenClaims$, this.authService.user$])
        .pipe(filter(([claims, user]) => !!claims && !!user))
        .subscribe(([claims, user]) => {
          this.token = claims.__raw;
          this.login();
        });
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:33:18