【问题标题】:NullReferenceException when trying to obtain Microsoft Graph Token尝试获取 Microsoft Graph 令牌时出现 NullReferenceException
【发布时间】:2019-11-13 23:02:54
【问题描述】:

我们正在尝试从 asp.net core 2.2 web api 项目访问当前用户的日历事件。我们正在使用 Azure AD 身份验证,并且该 JWT 令牌由 Angular 应用程序传递。我正在使用以下代码来获取 Graph 令牌。

var token = Request.Headers["Authorization"].ToString();

var app = ConfidentialClientApplicationBuilder.Create(config.ClientId) // Has GUID of registered app
    .WithAuthority(config.Authority)  // URL + Tenant ID
    .Build();

// THIS LINE THROWS THE EXCEPTION
var graphToken = await app.AcquireTokenOnBehalfOf(new List<string> { "Calendars.ReadWrite" },
    new Microsoft.Identity.Client.UserAssertion(token)).ExecuteAsync();

var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", graphToken.AccessToken);
var response = await client.GetAsync("https://graph.microsoft.com/v1.0/me");
var content = await response.Content.ReadAsStringAsync();

return Ok(content);

不太清楚为什么会收到此错误。令牌具有 Azure AD 生成的 JWT。我尝试过使用和不使用令牌的 Bearer 前缀,结果相同。

谢谢,

【问题讨论】:

  • 你怎么称呼那个代码?不知道是不是把异常标记在了不正确的地方
  • 此代码位于 Web API 项目的控制器中
  • 你似乎在混合东西。也许包括指向您尝试使用的文档的链接。如果您在角度使用令牌,为什么不使用角度请求令牌? docs.microsoft.com/en-us/azure/active-directory/develop/…
  • @Stephan 因为我正在尝试在 API 上获取日历事件。用户通过 Azure AD 进行了身份验证,但我需要通过 MS Graph 访问他们的日历,这需要 API 使用身份验证令牌中的用户身份获取不同的令牌。
  • 使用哪个流?

标签: c# azure-active-directory microsoft-graph-api


【解决方案1】:

我不得不改变策略并改变我们的流程以使用来自 Azure AD 的 V2.0 令牌。

我还使用此代码 (https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2) 来帮助获取 MS Graph 身份验证令牌。

谢谢。

【讨论】:

  • 很遗憾,此链接不再有效。我真的很想知道你做了什么来让它工作。谢谢
  • 我已经更新了项目根目录的链接
猜你喜欢
  • 1970-01-01
  • 2023-01-01
  • 2022-06-23
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
相关资源
最近更新 更多