问题描述
我们在第一次获得管理员同意时收到一个无效的 accesstoken,其范围为空。如果用户再次重试 - 我们调用acquiretokenPopup 并且accesstoken 变得有效。
复制步骤
第 2 步:MS 提示登录和管理员同意页面(我们需要 User.Read.All)
第3步:我们调用acquiretokenSilent()获取Access Token作为Graph Client的AuthenticationProvider
第 4 步:Graph API /users 请求返回 403 - 权限不足
核心库:@azure/msal 或 msal
核心库版本:1.4.8
包装库:@azure/msal-angular
包装库版本:1.1.2
角度:7
我在此处创建了 GitHub 问题票证:https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/3524
解决方法
向应用程序添加权限时,您必须授予租户范围的管理员对该应用程序的同意。但是,无论是在 Azure 门户中授予管理员同意还是使用管理员同意 URL,都会有短暂的延迟。
如果您在获得管理员同意后立即请求访问令牌,可能会导致令牌缺乏权限。在这种情况下,您只需刷新,然后再次尝试获取令牌。
另外,一定要保证token是管理员同意后获取的,否则原来的token还是不包含新的权限。