目录
services.AddAuthorization和services.AddAuthentication是ASP.NET Core中的两个核心服务注册方法。
一、services.AddAuthentication
二、services.AddAuthorization
总结
services.AddAuthorization和services.AddAuthentication是ASP.NET Core中的两个核心服务注册方法。
一、services.AddAuthentication
AddAuthentication
用于注册身份验证服务。身份验证是指确认用户身份的过程,确保、验证用户提供的凭据是否合法。通常,你需要指定一个具体的身份验证方案,如基于Basic的身份验证或JWT Bearer Token身份验证。然后为每个请求创建相应的用户身份(通常为一个 ClaimsPrincipal
对象)。
使用方法:
例如使用JWT:
services.AddAuthentication(options =>
{ options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{ options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "YourIssuer", ValidAudience = "YourAudience", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("YourSecretKey")) };
});
例如使用Basic:
services.AddAuthentication(options =>
{options.DefaultAuthenticateScheme = "Basic";options.DefaultChallengeScheme = "Basic";
}).AddBasic(options =>
{options.Realm = "My Realm";options.Events = new BasicAuthenticationEvents{OnValidateCredentials = context =>{var username = context.Username;var password = context.Password;if (username == "user" && password == "pass"){context.ValidationSucceeded();}else{context.ValidationFailed();}return Task.CompletedTask;}};
});
二、services.AddAuthorization
AddAuthorization
用于注册授权服务,允许你根据策略和要求控制访问。授权是指确定用户是否可以访问某些资源或操作的过程。在此配置中,通常定义不同的策略,以控制对特定资源或控制器的访问。
使用方法:
services.AddAuthorization(options =>
{ // 添加声明options.AddPolicy("RequireEmail", policy => policy.RequireClaim(ClaimTypes.Email)); // 添加角色options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Admin"));
});
总结
身份验证和授权是两个互补的过程。先通过AddAuthentication设置身份验证,确保你知道用户是谁;然后通过AddAuthorization定义可用的授权策略,基于用户的身份来控制访问。