azure 错误:“OrganizationFromTenantGuidNotFound”(即使使用Microsoft 365订阅)

nvbavucw  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(409)

我试图从outlook日历中获取事件,但这样做时出错。我在Azure Portal上注册了一个应用程序(免费计划),我正在使用它来读取Nodejs的事件。以下是我设置的权限,以便能够查询Microsoft Graph API:
ApiPermissions

使用https://login.microsoftonline.com/{tenantId}/oauth2/authorize?client_id={clientId}&response_type=code&redirect_uri=http://localhost:3000&scope=https://graph.microsoft.com/.default openid profile offline_access&state=12345,我已经能够获得一个{code},我正在使用https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token使用这个body参数兑换访问令牌:

{
    "grant_type": "authorization_code",
    "code": "{code}",
    "redirect_uri": "http://localhost:3000",
    "client_id": "{clientId}",
    "client_secret": "{clientSecret}",
    "scope": "https://graph.microsoft.com/.default openid profile offline_access"
}

我相信这个令牌的范围也适合我所需要的:
TokenError

当我尝试向https://graph.microsoft.com/v1.0/{tenantId}/users甚至https://graph.microsoft.com/v1.0/997f56e7-06b6-44ad-be6a-3cc7377ae54a/users/{userId}发出请求时,我可以毫无问题地获得用户数据。响应如下所示:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
    "businessPhones": [],
    "displayName": "My Display Name",
    "givenName": "My Name",
    "jobTitle": null,
    "mail": null,
    "mobilePhone": null,
    "officeLocation": null,
    "preferredLanguage": "en",
    "surname": "My Surname",
    "userPrincipalName": "...@....onmicrosoft.com",
    "id": "aaaaaaaa-bbbb-cccc-..."
}

但是当我向https://graph.microsoft.com/v1.0/{tenantId}/users/{userId}/calendars发出请求时,我得到以下错误:

{"error":{"code":"OrganizationFromTenantGuidNotFound","message":"The tenant for tenant guid '\[tenantGuid\]' does not exist.","innerError":{"oAuthEventOperationId":"bf9e026f-6160-4975-8952-1796d0903882","oAuthEventcV":"tiG/jGvOvqjHEw5i0jde2Q.1","errorUrl":"https://aka.ms/autherrors#error-InvalidTenant%22,%22requestId%22:%22b274ff09-22e7-48ff-abfa-1703c90ad358%22,%22date%22:%222023-03-28T07:42:17"}}}

我就用了documentation
还有,我对这个错误做了广泛的搜索,我发现我需要微软365订阅,所以我买了一个。我目前有微软365个人计划。
我还在Azure Portal上添加了Office 365管理API权限。
我仍然有同样的问题,我需要重新设置租户吗?我是否需要更改配置中的某些内容,或者我是否遗漏了某些内容?也许我没有正确的订阅,我需要Microsoft 365 Business订阅吗?我该怎么解决呢?
有趣的是,当我尝试使用Microsoft Graph Explorer发出完全相同的请求时,它会按预期工作。如果我在我的后端使用访问令牌选项卡中给出的令牌,它也可以正常工作,所以我相信问题在于我得到的令牌。

n3h0vuf2

n3h0vuf21#

我创建了一个Azure AD应用程序并授予API权限,如下所示:

我使用以下端点生成了验证码

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345

我使用以下参数生成了访问令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
grant_type:authorization_code
scope:https://graph.microsoft.com/.default
code:code
redirect_uri:https://jwt.ms
client_secret:ClientSecret

当我解码令牌时,存在范围:

使用上面生成的访问令牌,我能够成功获取日历详细信息,如下所示:

https://graph.microsoft.com/v1.0/{tenantId}/users/{userId}/calendars

如果租户中缺少执行操作的许可证,则通常会发生错误。
要解决此错误,请订阅O365许可证并将O365许可证分配给用户,如下所示:

如果问题仍然存在,请检查以下内容:

  • 检查是否传递了正确的TenantID。
  • 如果要呼叫其他租户用户,请使用组织/公共端点。
  • 否则,请尝试配置另一个租户并进行检查。

相关问题