首页 > 解决方案 > Msal-Angular v1-acquireTokenPopup/LoginPopup 返回一个权限不足的访问令牌,即使在授予管理员同意后也是如此

问题描述

在首次授予管理员同意时,我们收到了一个无效的 accessToken,其范围为空。如果用户再次重试——我们调用acquireTokenPopup 并且accessToken 变为有效。

在此处输入图像描述

复制步骤

第 1 步:管理员点击登录按钮 (loginPopup)

第 2 步:MS 提示登录和管理员同意页面(我们需要 User.Read.All)

第三步:我们调用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

标签: azureazure-active-directorymicrosoft-graph-apimsal-angularangular-v7

解决方案


向应用程序添加权限时,您必须授予租户范围的管理员对应用程序的同意。但是,无论是在 Azure 门户中授予管理员许可还是使用管理员许可 URL,都会有短暂的延迟。

如果您在征得管理员同意后立即请求访问令牌,可能会导致令牌缺少权限。这种情况下,只需要刷新,然后再次尝试获取token即可。

另外,一定要保证token是在管理员同意后获取的,否则原来的token仍然不会包含新的权限。


推荐阅读