从asp.net core2身份验证web应用程序获取Microsoft Graph的访问令牌



我创建了一个新的asp.net核心2 web应用程序。我正在使用个人用户帐户,并添加了用于外部身份验证的Microsoft帐户。所有这些工作都如预期。

现在我想使用Microsoft Graph来读取我的.live个人资料,并最终读取我的邮箱和类似的内容。

我创建了一个身份验证提供程序,我可以取回访问令牌,但为什么我尝试使用访问令牌,我收到了Authorization_IdentityNotFound错误,尽管我的clientId和secret输入正确。

我认为这是由于我没有使用正确的参数来请求访问令牌。我想我丢失了通常在登录.live帐户时返回的授权响应代码。

有人知道如何检索响应代码吗?或者在asp.net core2中有一个工作示例。我能找到的唯一样本是.net内核1.1,从那以后情况发生了很大的变化。

您在这里混淆了几个不同的系统。

为了访问Microsoft Graph API,您需要在调用的authorization头中传递访问令牌。这用于向Microsoft Graph提供您的身份信息以及您的数据存储位置(您是租户)。

实际的访问令牌不是由Microsoft Graph发布的,而是由您的租户发布的。对于工作/学校帐户,这是您帐户所在的Azure Active Directory租户。对于个人帐户,这是Outlook.com的租户。

在接收访问令牌之前,您首先检索授权代码。在您输入凭据后,它将返回给您传递给login.microsoftonline.comredirect_url。然后,您的应用程序获取此授权代码,并将其交换为访问令牌以用于调用Microsoft Graph。

如果你正在寻找一个身份验证库来处理这个过程,你应该使用MSAL.NET。你可以在GitHub上的dotnet存储库的microsoft身份验证库中找到使用此库的说明。

一旦您有了令牌,您可以直接调用Microsoft Graph,也可以利用Microsoft Graph Client Library for.NET.

相关内容

最新更新