Microsoft Graph API 令牌的范围与 Azure 门户中设置的不同

Microsoft Graph API token's scope is different from the ones set in the Azure portal

通过使用 jwt.io 我设法确定我的应用程序为 Microsoft Graph API 获取的令牌仅包含 Directory.Read.All 和 User.Read 的范围:

这与我在包含更多范围的 Azure 门户中设置的权限不同,例如 User.ReadBasic.All:

有办法解决这个问题吗?

当您在用户已经登录并同意您的应用程序后返回您的应用程序并添加额外权限时,我经常看到这种情况。该用户继续获得 "old" 权限,但新用户将获得新权限集。

如果我的猜测是正确的,那么您最初可能只使用 Directory.Read.AllUser.Read 注册了该应用程序。您使用您的用户帐户登录。然后你去添加了额外的权限并再次尝试。听起来对吗?

问题是 Azure 的 v1 终结点不会为已经同意的用户动态更新范围。您需要为这些用户强制提供 "re-consent" 体验。将 prompt=consent 参数添加到您的授权 URL。这应该会导致用户再次看到带有更新的权限列表的同意屏幕。