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

时间:2017-10-09 15:43:02

标签: microsoft-graph asp.net-core-2.0

我创建了一个新的asp.net core 2 Web应用程序。我正在使用个人用户帐户并添加了我的Microsoft帐户以进行外部身份验证。所有这一切都像预期的那样。

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

我创建了一个身份验证提供程序,我能够获取访问令牌,但为什么我尝试使用访问令牌,虽然正确输入了clientId和secret,但我收到了Authorization_IdentityNotFound错误。

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

有谁知道如何检索该响应代码或在asp.net core2中有一个工作示例。我能找到的唯一样本是.net核心1.1,从那以后事情发生了相当大的变化。

1 个答案:

答案 0 :(得分:0)

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

要访问Microsoft Graph API,您需要在通话的authorization标题中传递访问令牌。这用于向Microsoft Graph提供您的标识以及存储数据的位置(您是租户)。

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

在收到访问令牌之前,您首先检索授权码。在您输入凭据后,这将返回到您传递给redirect_url的{​​{1}}。然后,您的应用会使用此授权码并将其与访问令牌进行交换,您将用它来调用Microsoft Graph。

如果您正在寻找authentication library来处理此过程,则应使用MSAL.NET。您可以在GitHub上的microsoft-authentication-library-for-dotnet存储库中找到有关使用此库的说明。

获得令牌后,您可以直接致电Microsoft Graph,也可以使用Microsoft Graph Client Library for .NET