调用MSAL授权用户报AADSTS65001错误,未授予API权限是否为原因
问题结论
权限未授予就是触发本次AADSTS65001报错的直接核心原因。
错误原理说明
你遇到的报错:
invalid_grant: AADSTS65001: The user or administrator has not consented to use the application with ID "My app client ID". Send an interactive authorization request for this user and resource.
本质是Azure AD校验到你请求的资源权限未获得用户或租户管理员的授权许可。你在应用注册的API权限页面添加权限,仅完成了「应用所需权限」的声明,不代表权限已经被批准可实际调用,未授予状态的权限自然无法通过授权校验。
修复方案
- 若你配置的是委托权限:
- 不需要管理员同意的权限:在MSAL调用
loginPopup或loginRedirect触发交互式登录时携带对应scope,引导登录用户手动完成权限同意即可正常获取token - 标注了「需要管理员同意」的权限:需由租户管理员在API权限页面点击「授予[租户名称]的管理员同意」,完成后权限状态会更新为已授予
- 不需要管理员同意的权限:在MSAL调用
- 若你配置的是应用权限:
必须由租户管理员手动授予管理员同意,无用户自主同意路径,未完成授予前一定会触发该报错
额外排查项:确认你MSAL请求token时传入的scope,和应用注册中配置的权限完全匹配,包括资源前缀、权限拼写,比如调用Microsoft Graph的
User.Read不能错写为UserRead或缺失资源前缀,scope不匹配也会触发同类报错。
内容的提问来源于stack exchange,提问作者AlvinfromDiaspar
相关产品推荐
相关产品推荐

