Azure API 管理 - 授权属性

Azure API Management - Authorize Attribute

我在 Azure 中托管我的 API 并配置 API 身份验证和授权管理。我是否还需要在 api 控制器上包含 [Authorize] 属性?如果是这样,我需要在 Startup class 中做什么才能在通过 Azure 调用时允许访问,但如果直接调用端点则未经授权?

    [ApiController]
    [Route("api/[controller]")]
    public class TestController : BaseController

根据你的问题我的理解你可以这样接。

  1. 仍然使用[授权],因为在 APIm 中托管后,应用程序仍然需要授权用户,post 身份验证。

  2. 身份验证将在 startup.cs

    中进行
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
           .AddJwtBearer(options =>
           {
               options.Authority = <<Pass your authority>>;
               options.Audience = <<Pass audience>>;
               options.RequireHttpsMetadata = true;
               options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
               {
                   ValidateIssuer = false
               };
    
           });
    
  3. 在 APIM 中使用验证 Jwt Inbound policy

  4. 但如果用户能够生成所需的 Bearer 令牌,那么它应该能够访问。如果你想限制它不是来自 APIM 那么你可以检查 header 中的 APIM subscription Key & 可以拒绝用户请求。