azure - 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
解决方案
向应用程序添加权限时,您必须授予租户范围的管理员对应用程序的同意。但是,无论是在 Azure 门户中授予管理员许可还是使用管理员许可 URL,都会有短暂的延迟。
如果您在征得管理员同意后立即请求访问令牌,可能会导致令牌缺少权限。这种情况下,只需要刷新,然后再次尝试获取token即可。
另外,一定要保证token是在管理员同意后获取的,否则原来的token仍然不会包含新的权限。
推荐阅读
- swift - 你能挑选和选择在 Swift 的子类中继承的内容吗?
- javascript - filecleared of fileinput 删除
- json - 如何将带有标识符的 JSON 对象解析为打字稿?
- cmake - 如何在 CMake 中安装时使用版本号重命名/修改目标文件?
- python-3.x - python中的if函数。在 break 语句中出现错误
- c# - C# ToolTip 语言在运行时更改
- python - 获取 ValueError:参数的类型不受支持,我尝试了所有数据类型
- php - 如何从 ajax 响应数据中获取 php 变量数据
- javascript - SHA256 的 ABAP 字符串与 SAPUI5/Javascript 不同
- sql - Athena/Presto:复杂结构/数组