如何授权服务使用Azure Active Directory调用API?

如何授权服务使用Azure Active Directory调用API?,azure,asp.net-core,azure-active-directory,Azure,Asp.net Core,Azure Active Directory,我有一个从Azure AD获取访问令牌的服务。我有一个API,我想接受该令牌作为授权 我调用API的服务代码是 HttpClient client = new HttpClient() { BaseAddress = new Uri("https://localhost:44372/") }; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, client.BaseAddress + "api/todol

我有一个从Azure AD获取访问令牌的服务。我有一个API,我想接受该令牌作为授权

我调用API的服务代码是

HttpClient client = new HttpClient()
{
  BaseAddress = new Uri("https://localhost:44372/")
};

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, client.BaseAddress + "api/todolist");
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response = await client.SendAsync(request);
我得到的回复是
401-未经授权

我感觉问题出在API
ConfigureServices
函数中;具体来说(这是一个例子,所以我还不知道它的意思):

services.Configure(AzureADDefaults.JwtBearerAuthenticationScheme,选项=>
{
options.TokenValidationParameters.RoleClaimType=“角色”;
});    
我是Azure和身份验证的新手,所以我不知道哪些选项可用或合适。我也不知道如何在Azure中设置应用程序以允许这样做。我已将服务的应用程序id设置为API的授权客户端应用程序;它也在API清单中的knownClientApplications中列出

有这么多旋钮要转动,我不知道从这里到哪里去。如果有人能让我知道一些可以尝试的东西,那就太棒了


感谢

以下是关于如何使用Azure AD在ASP.NET核心web应用程序中调用web API的代码示例:

此示例包含在受Azure AD保护的ASP.NET Core 2.0上运行的web API。该web API由代表登录用户的ASP.NET Core 2.0 web应用程序访问。ASP.NET Web应用程序使用OpenID连接中间件和Active Directory身份验证库(ADAL.NET)为使用OAuth 2.0协议的登录用户获取JWT承载令牌。承载令牌被传递到web API,web API使用JWT承载认证中间件验证令牌并授权用户


我的文章可能会有帮助:。上面的文章应该会有帮助,如果你解决了你的问题,你可以在这里发布答案以帮助他人。谢谢。
services.Configure<JwtBearerOptions>(AzureADDefaults.JwtBearerAuthenticationScheme, options =>
{
    options.TokenValidationParameters.RoleClaimType = "roles";
});