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

Azure AD B2C与React集成MSAL遇AADB2C90205权限错误如何解决?

解决AADB2C90205:应用对Web资源权限不足的错误

这个错误我之前帮不少开发者排查过,核心就是你的React应用对应的Azure AD B2C应用,没有被授予访问目标Web资源(比如你的后端API)的必要权限。下面是一步步的排查和解决步骤:

1. 先确认目标Web API的权限配置

登录Azure门户,找到你要访问的目标Web API的应用注册:

  • 切换到公开API标签,先确认应用程序ID URI已经设置(比如https://yourtenant.onmicrosoft.com/yourapi),这个URI是后续权限配置的核心标识,不能少。
  • 检查你需要的权限范围是否已定义:在公开API下点击添加范围,确认存在你要用到的范围(比如access_as_user),并且状态是已启用。

2. 给React的B2C应用授予API权限

回到你的React应用对应的Azure AD B2C应用注册页面:

  • 切换到API权限标签,点击添加权限。
  • 在弹出的窗口里选我的 APIs,找到刚才的目标Web API。
  • 勾选你需要的权限范围(比如之前定义的access_as_user),然后点击添加权限。
  • 重中之重:点击授予管理员同意——如果是用户委托权限,必须完成这一步,否则用户登录后还是拿不到对应的权限令牌。

3. 检查React里的MSAL配置是否正确

在你的React应用的MSAL配置代码里,确认scopes参数是完整且正确的:

  • 权限范围必须包含API的完整URI前缀,比如https://yourtenant.onmicrosoft.com/yourapi/access_as_user,不能只写access_as_user,否则B2C无法识别对应的资源。
  • 给你个配置示例参考:
    const msalConfig = {
      auth: {
        clientId: "你的React应用Client ID",
        authority: "https://你的租户名.b2clogin.com/你的租户名.onmicrosoft.com/你的注册登录策略名",
        redirectUri: "http://localhost:3000", // 你的React应用回调地址
      },
      cache: {
        cacheLocation: "sessionStorage",
        storeAuthStateInCookie: false,
      }
    };
    
    // 登录和获取令牌的请求配置
    const loginRequest = {
      scopes: ["https://你的租户名.onmicrosoft.com/你的API名/access_as_user"]
    };
    

4. 确认令牌请求的方式正确

如果你用acquireTokenSilent或者acquireTokenPopup来获取访问令牌,一定要确保传入的scopes和你在Azure门户配置的完全一致:

  • 比如调用acquireTokenPopup(loginRequest)时,loginRequest里的scopes必须和授予的权限范围完全匹配,不能有拼写错误。

5. 解码令牌排查(可选)

如果还是没解决,你可以拿到登录后的id token或access token,去解码工具里查看内容:

  • 检查令牌里的scp(用户委托权限)或者roles(应用权限)字段,是否包含你需要的权限。如果没有,说明权限配置还是有问题,回到前面的步骤重新检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:15:44