尝试获取Microsoft Graph令牌时发生NullReferenceException

时间:2019-07-03 09:28:50

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

我们正试图从asp.net core 2.2 Web api项目访问当前用户的日历事件。我们正在使用Azure AD身份验证,并且Angular应用程序传递了JWT令牌。我正在使用以下代码来获取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前缀,结果相同。

谢谢

1 个答案:

答案 0 :(得分:0)

我必须更改策略并更改流程以使用Azure AD中的V2.0令牌。

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

谢谢。