使用MSAL React应用调用端点时出现401 Unauthorized错误
排查方案
验证客户端应用的API权限
确认React客户端的Azure AD应用已添加自定义API的user_impersonation权限,并且该权限已完成管理员同意(租户级应用必须由管理员操作,否则令牌不会包含对应scope声明)。检查令牌的有效范围
获取到accessToken后,用jwt.ms解析令牌,查看scp或roles字段是否包含user_impersonation。如果没有,说明scope配置错误(比如API的client-id填写错误),或者权限未正确同步。确认自定义API的身份验证配置
- 确保API的受众(Audience)设置为
api://<api-client-id>,与请求scope中的client-id完全一致; - 检查API的身份验证中间件是否正确验证令牌的签名、颁发者(issuer)和受众;
- 若API部署在Azure App Service,确认"身份验证/授权"功能已启用,且允许的令牌颁发者与你的租户匹配。
- 确保API的受众(Audience)设置为
检查API的CORS设置
确保API允许React应用的域名(http://localhost:3000)跨域访问,并且允许携带Authorization请求头。错误的CORS配置可能导致请求预检失败,间接表现为权限错误。确认活跃账号有效性
登录成功后,必须调用msalInstance.setActiveAccount(account)设置活跃账号,否则getActiveAccount()可能返回无效账号,导致获取的令牌与当前登录用户不匹配。
内容的提问来源于stack exchange,提问作者user989988
相关产品推荐
相关产品推荐

