当前位置: 首页 > article >正文

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


http://www.kler.cn/news/313371.html

相关文章:

  • tomcat的配置
  • 【LLM:Gemini】文本摘要、信息提取、验证和纠错、重新排列图表、视频理解、图像理解、模态组合
  • 避免服务器安装多个mysql引起冲突的安装方法
  • ubuntu安装mongodb实操学习
  • Python画笔案例-055 绘制七彩浪花
  • uni-app页面调用接口和路由(四)
  • 代码随想录算法训练营第三一天| 56. 合并区间 738.单调递增的数字 968.监控二叉树
  • C# 实时流转换为m3u8
  • docker 升级步骤
  • 从一个文本文件中挑选出符合条件的内容行
  • Java ----常用类
  • 算法课习题汇总(2)
  • java中SPI(服务提供者的接口)
  • 项目实训:CSS基本布局理解——WEB开发系列38
  • js中两种异步方式:async+await以及then
  • 梧桐数据库(WuTongDB):Volcano/Cascades 优化器框架简介
  • 毕业设计选题:基于ssm+vue+uniapp的捷邻小程序
  • Linux系统编程(基础指令)上
  • 《动手深度学习》线性回归简洁实现实例
  • 【Webpack--013】SourceMap源码映射设置
  • windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘
  • 使用vite+react+ts+Ant Design开发后台管理项目(二)
  • SpringBoot:关于Redis的配置失效(版本问题)
  • 6. Python 输出长方形,直角三角形,等腰三角形
  • 【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密
  • 解决“Windows系统中以管理员身份运行程序时无法访问映射的网络磁盘”的问题
  • C# WPF如何实现数据共享
  • C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串
  • 2024年上海小学生古诗文大会倒计时一个月:做2024官方模拟题
  • 人家90年代就尝试过的模式:我们所热衷的“数科公司”