Msal-Angular v1 - acquireTokenPopup/LoginPopup returns 一个权限不足的访问令牌,即使在授予管理员同意后也是如此

Msal-Angular v1 - acquireTokenPopup/LoginPopup returns an Access Token with Insufficient Privileges even after granting admin consent

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

复制步骤

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

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

第 3 步:我们调用 acquireTokenSilent() 来获取访问令牌作为我们的图形客户端的 AuthenticationProvider

第 4 步:图表 API /用户请求 returns 403 - 权限不足

核心库:@azure/msal 或 msal

核心库版本:1.4.8

包装库:@azure/msal-angular

包装库版本:1.1.2

Angular: 7

我在这里创建了 GitHub 问题单:https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/3524

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

如果在征得管理员同意后立即申请access token,可能会导致token没有权限。这种情况下,你只需要刷新,然后重新尝试获取token即可。

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