【发布时间】: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