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

Microsoft Azure登录成功返回空scopes,react-native-app-auth调用接口报401

问题排查方案

核心原因

Azure AD v2.0 端点不支持单次授权请求同时申请多个不同资源的权限,你当前配置中同时传入了属于微软Graph服务的User.Read scope和属于自定义后端的api://XXXX/access_as_user scope,会导致token生成逻辑异常,要么返回的token仅适用于其中一个资源,要么scope字段返回为空。

具体排查步骤

  • 拆分scope请求
    Azure AD签发的access token为单资源专属,一个token只能用于调用一个服务:
    • 若需要调用微软Graph接口,单独发起一次授权请求,scopes参数仅传入['openid', 'offline_access', 'profile', 'User.Read'],获取Graph专属的token
    • 若需要调用自定义后端API,单独发起一次授权请求,scopes参数仅传入['api://XXXX/access_as_user'],获取后端专属的token,用这个token发起后端请求即可解决401问题
  • 校验自定义API的权限配置
    进入Azure Portal的应用注册界面,检查自定义后端对应的应用注册配置:
    1. 已正确暴露access_as_user权限,权限的作用域标识符和你配置的api://XXXX/access_as_user完全一致
    2. 你的移动端应用注册已被授予该自定义API的access_as_user权限,若为企业租户,已完成管理员同意操作
  • 校验access token有效性
    将调用自定义API时使用的access token复制到JWT解析工具中,检查以下字段:
    1. aud(受众)字段值必须等于自定义API的应用ID或者你设置的API标识符(api://XXXX),如果值为https://graph.microsoft.com则说明这个token是给Graph服务用的,无法调用你的后端
    2. scp(权限)字段必须包含access_as_user
    3. iss(签发者)字段必须和你的租户匹配,exp(过期时间)未到点
  • 校验后端鉴权配置
    确认你的后端API的JWT校验逻辑中,受众、签发者、签名算法配置和Azure AD的配置完全匹配,且权限校验逻辑正确识别access_as_user权限
  • 校验基础参数配置
    单独请求自定义API的scope后如果依然返回空scopes,检查:
    1. 配置中的redirectUrl和Azure应用注册中配置的移动端重定向URI完全一致,包含大小写、末尾斜杠都要匹配
    2. tenantId参数填写正确,若为单租户应用不要填common

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:24:03