Azure API 管理 - 授权属性
Azure API Management - Authorize Attribute
我在 Azure 中托管我的 API 并配置 API 身份验证和授权管理。我是否还需要在 api 控制器上包含 [Authorize] 属性?如果是这样,我需要在 Startup class 中做什么才能在通过 Azure 调用时允许访问,但如果直接调用端点则未经授权?
[ApiController]
[Route("api/[controller]")]
public class TestController : BaseController
根据你的问题我的理解你可以这样接。
仍然使用[授权],因为在 APIm 中托管后,应用程序仍然需要授权用户,post 身份验证。
身份验证将在 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
};
});
在 APIM 中使用验证 Jwt Inbound policy
。
但如果用户能够生成所需的 Bearer 令牌,那么它应该能够访问。如果你想限制它不是来自 APIM 那么你可以检查 header 中的 APIM subscription Key
& 可以拒绝用户请求。
我在 Azure 中托管我的 API 并配置 API 身份验证和授权管理。我是否还需要在 api 控制器上包含 [Authorize] 属性?如果是这样,我需要在 Startup class 中做什么才能在通过 Azure 调用时允许访问,但如果直接调用端点则未经授权?
[ApiController]
[Route("api/[controller]")]
public class TestController : BaseController
根据你的问题我的理解你可以这样接。
仍然使用[授权],因为在 APIm 中托管后,应用程序仍然需要授权用户,post 身份验证。
身份验证将在 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 }; });
在 APIM 中使用验证
Jwt Inbound policy
。但如果用户能够生成所需的 Bearer 令牌,那么它应该能够访问。如果你想限制它不是来自 APIM 那么你可以检查 header 中的
APIM subscription Key
& 可以拒绝用户请求。