自学内容网 自学内容网

C#身份验证那些事儿之注册服务AddAuthorization和AddAuthentication

目录

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定义可用的授权策略,基于用户的身份来控制访问。


原文地址:https://blog.csdn.net/hua_chi/article/details/142362669

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!