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

Angular SPA集成Azure B2C登录后调用MSAL Token遇AADB2C90077错误

解决Azure B2C Angular应用中AADB2C90077令牌获取错误的方案

我之前也碰到过一模一样的问题,当时折腾了好一阵才搞定,给你分享几个亲测有效的解决思路:

  • 把控静默请求的触发时机
    登录重定向完成后,MSAL需要一点时间把令牌持久化到存储里。如果页面刚加载就立刻调用acquireTokenSilent这类静默获取方法,很可能存储还没就绪,直接抛出这个错误。建议你在handleRedirectObservable的回调确认登录结果后,再执行令牌相关逻辑:

    this.msalService.handleRedirectObservable().subscribe({
      next: (result) => {
        if (result?.account) {
          // 确认登录成功后再调用令牌获取方法
          this.fetchProtectedData();
        }
      },
      error: (err) => console.error('重定向处理失败:', err)
    });
    
  • 调整静默请求的prompt参数逻辑
    错误提示明确提到prompt参数是None,这意味着静默请求不允许弹出登录界面。如果存储里的令牌和Azure B2C的实际会话不同步(比如会话过期但令牌还在),就会触发这个报错。你可以在捕获到该错误时,主动切换为交互式登录:

    async getAccessToken() {
      try {
        const response = await this.msalService.acquireTokenSilent({
          scopes: ['https://your-b2c-tenant.onmicrosoft.com/api/access'],
          prompt: 'none'
        });
        return response.accessToken;
      } catch (err) {
        if (err.errorMessage.includes('AADB2C90077')) {
          // 会话失效,触发交互式登录重新获取
          this.msalService.loginRedirect({ scopes: ['https://your-b2c-tenant.onmicrosoft.com/api/access'] });
        }
        throw err;
      }
    }
    
  • 同步存储与实际会话状态
    有时候存储里残留的旧令牌信息会和Azure B2C的实际会话脱节,导致静默请求失败。可以在应用启动时做一次状态校验,发现异常就清理无效账户并重新登录:

    ngOnInit() {
      const activeAccount = this.msalService.instance.getActiveAccount();
      if (activeAccount) {
        this.msalService.acquireTokenSilent({ scopes: ['your-api-scopes'] })
          .catch(err => {
            if (err.errorMessage.includes('AADB2C90077')) {
              this.msalService.instance.removeAccount(activeAccount);
              this.msalService.loginRedirect();
            }
          });
      }
    }
    
  • 检查Azure B2C的会话配置
    最后可以登录Azure门户,查看B2C租户的会话设置——比如会话超时时间、是否允许跨域会话等。如果会话超时设置过短,可能刚登录就出现会话失效的情况,调整后能缓解这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:19:20