.net core 从.net core api中的承载令牌获取信息,以便在端点上执行附加授权

.net core 从.net core api中的承载令牌获取信息,以便在端点上执行附加授权,.net-core,asp.net-core-webapi,auth0,.net Core,Asp.net Core Webapi,Auth0,我有一个angular客户端,它通过Auth0授权用户,然后使用Auth0的令牌来使用内置在.net内核中的API。Startup.cs中的身份验证为 services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.Def

我有一个angular客户端,它通过Auth0授权用户,然后使用Auth0的令牌来使用内置在.net内核中的API。Startup.cs中的身份验证为

services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                options.Authority = "removed";
                options.Audience = "removed";
            });
我有一个这样的端点

[Authorize]
[HttpGet("preview/{questionId}")]
[...]
public ActionResult<Question> GetQuestionPreviewById(string questionId)
{
  ...
  return Ok(model);
}
但我不知道如何在.net中实现这一点

如何使用提供的令牌在端点上添加额外授权?

1)您需要首先将声明分配给特定用户

2) 在“配置服务”中,使用选项添加授权以包括策略

public void ConfigureServices(IServiceCollection services)
{ 
   services.AddAuthorization(options =>
   {
    options.AddPolicy("EmployeeOnly", policy => 
      policy.RequireClaim("EmployeeNumber"));
   });
}
3) 然后使用AuthorizeAttribute属性上的policy属性应用策略,以指定策略名称

[Authorize(Policy = "EmployeeOnly")]
public IActionResult VacationBalance()
{
   return View();
}
[Authorize(Policy = "EmployeeOnly")]
public IActionResult VacationBalance()
{
   return View();
}