Authorization_IdentityNotFound Microsoft Graph API 第一次请求,

Authorization_IdentityNotFound on Microsoft Graph API request first time,

都2021年了,我又遇到这个问题了....

当调用 /users MS Graph API 时,它说:

{
    "error": {
        "code": "Authorization_IdentityNotFound",
        "message": "The identity of the calling application could not be established.",
        "innerError": {
            "request-id": "b2d9ec62-0b65-44eb-9e0f-4aec52b45750",
            "date": "2021-01-22T10:19:48"
        }
    }
}

我使用 'client credentials' 流程,并且我已经配置为获得管理员同意以获取租户 ID。然后用它调用https://login.microsoftonline.com/{tenantId}/oauth2/token获取token.

我将 permissions/scopes 配置为:

- Directory.Read.All
- User.Read.All
- Calendars.ReadWrite

甚至:

- Directory.Read.All
- Calendars.ReadWrite

奇怪的是,这个错误只发生在第一次使用全局管理员帐户授权应用程序获得的令牌时。如果使用第二个令牌在几秒钟后返回,它将起作用。通过比较这两个标记,我发现不同之处在于,不起作用的标记在 JWT 中没有“roles: string[]”值,而起作用的标记有(见附图)。

token not working token working

谁能帮帮我? 非常感谢!

谢谢

错误的原因不是你没有权限,是延迟造成的。

你的想法是正确的。您的第一个令牌调用不成功的原因是令牌中缺少 roles 声明,这意味着权限未注入到第一个令牌中。当您向应用程序授予 admin consent 时,它将被延迟。如果你现在拿到token,可能会导致token缺少权限。因此,请在您授予管理员同意后等待几分钟,然后再尝试获取令牌。