Office365 使用JWT获取Microsoft API的令牌

Office365 使用JWT获取Microsoft API的令牌,office365,azure-active-directory,Office365,Azure Active Directory,阅读时,您必须使用注册应用程序。 此外,根据,您需要应用程序ID URI为aud参数指定范围参数和租户ID,以便。 问题是:我在哪里可以找到这些信息 我试图使用这些工具,但没有成功: scope : api://0adaa814-c4d4-4c09-ae8e-dd0535e9e931/.default aud : https://login.microsoftonline.com/mldijon.onmicrosoft.com/v2.0/oauth2/token 有关此处的详细信息,请参阅我在

阅读时,您必须使用注册应用程序。
此外,根据,您需要应用程序ID URI为aud参数指定范围参数和租户ID,以便。
问题是:我在哪里可以找到这些信息

我试图使用这些工具,但没有成功:

scope : api://0adaa814-c4d4-4c09-ae8e-dd0535e9e931/.default
aud : https://login.microsoftonline.com/mldijon.onmicrosoft.com/v2.0/oauth2/token
有关此处的详细信息,请参阅我在尝试获取令牌时遇到的错误:

AADSTS50059:在中或中未找到租户标识信息 请求或暗示任何提供的凭据

这是我为得到它而发出的请求:

POST /common/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 888bf937-31b4-166b-4d8d-339cd05e21ea

client_id=256e411c-bf42-4634-abaa-a7feafe6698a&scope=api%3A%2F%2F256e411c-bf42-4634-abaa-a7feafe6698a%2F.default&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJ4NXQiOiJKemdVM09ycWlqZVBFVjRGMlZLd3NFYW0rekk9IiwiYWxnIjoiUlMyNTYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiIyNTZlNDExYy1iZjQyLTQ2MzQtYWJhYS1hN2ZlYWZlNjY5OGEiLCJhdWQiOiJodHRwczpcL1wvbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbVwvbWxkaWpvbi5vbm1pY3Jvc29mdC5jb21cL29hdXRoMlwvdG9rZW4iLCJzdWIiOiIyNTZlNDExYy1iZjQyLTQ2MzQtYWJhYS1hN2ZlYWZlNjY5OGEiLCJleHAiOjE1MTEyNzI0MjYsImlhdCI6MTUxMTI2ODgyNiwibmJmIjoxNTExMjY4ODI2fQ.ZurlKZQ34FNPYLrAujzN6QOkZ9iufJMwVpkMU_gk53UOQqNk-Y_pFOf-OwwGRg9wCnfU46xZt2TiGj_3zLhHxsawg6VeI-tbt62onBiBfJCtTUXpedK23PLS0td7ss2oU7yziRmHDrGe3ZPmpMChnom2iLUNoZiZeAWgzdV47HGid7IJ8Je0fOglsvGvKLjRqC6Y5jJ2kaY6KDd8dhN4UgJjM-HoeGKYtNQ5dz9C8lPDD9_stejfkzDUtvCrFyOY9Cn5TmqZe-LxFW4i7imvriIQHRK1F30j7iWLDoB3aI9WN5Y0dTBl8_8bq83HE9fK5hWFmibt1zY4pclSGm8UNg&grant_type=client_credentials

您应该按照此处的说明获取Microsoft Graph的访问令牌

请注意以下几点:

  • aud
    值暗示为
    https://graph.microsoft.com
    未指定时
  • 范围
    值是由Microsoft Graph定义的一个或多个范围
现在,上面的代码专门用于用户登录。有一节介绍如何在没有用户的情况下获取访问令牌:

这遵循以下模式:

// Line breaks are for legibility only.

POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials
注意,这在令牌url中有
{tenant}
而不是
common
。这是因为当您在没有用户的情况下获取令牌时,必须指定您尝试访问的租户端点。在用户在场的情况下,我们尝试自动发现租户端点,这是公共端点所做的


如果这能解决您的问题,请告诉我。

您在这里想做什么?您试图访问的Microsoft API是什么?您遇到的错误可能是因为您使用的是“公共”端点,而不是特定于租户的端点。然而,你的文章的其余部分让人觉得你离正确的地方很远。我正在尝试访问Office 365 API。关于租户的端点,文档中有没有提到它?谢谢,我现在可以得到一个令牌,关键是使用{tenant}而不是令牌url中的公共。现在我在尝试进行API调用时遇到了401异常。我已尝试呼叫(在设置应用程序的权限Calendars.Read和Calendars.ReadWrite后),您是否重新获得管理员同意?新权限意味着您需要再次同意,因为我只有一个测试帐户,没有任何管理员。我可以使用相同的帐户执行此操作吗?您是使用用户登录还是使用凭据流?除非有用户登录,否则me端点没有意义
// Line breaks are for legibility only.

POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials