Msal-Angular v1 - 即使在授予管理员同意后,acquireTokenPopup/LoginPopup 也会返回权限不足的访问令牌

问题描述

我们在第一次获得管理员同意时收到一个无效的 accesstoken,其范围为空。如果用户再次重试 - 我们调用acquiretokenPopup 并且accesstoken 变得有效。

enter image description here

复制步骤

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

第 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还是不包含新的权限。