C#身份验证那些事儿之注册服务AddAuthorization和AddAuthentication
目录
services.AddAuthorization和services.AddAuthentication是ASP.NET Core中的两个核心服务注册方法。
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定义可用的授权策略,基于用户的身份来控制访问。
原文地址:https://blog.csdn.net/hua_chi/article/details/142362669
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!