谈谈ASP.NET CORE Identity的认证流程及授权过程

写在前面

ASP.NET Core Identity是一个会员系统ASP.NET Core Identity封装了User、Role、Claim等身份信息,便于我们快速完成登录功能的实现它允许你向应用程序添加登录功能用户可以使用用户名和密码创建登录账户也可以使用QQ微信、Fackbook、Microsoft等外部账号提供程序登录

1. 认证流程 

 在ASP.NET Core中使用的是基于申明(Claim)的认证,而什么是申明(Cliam)呢?

Claim 是关于一个人或组织的某个主题的陈述,比如:一个人的姓名,角色,个人喜好,种族,特权,社团,能力等等。它本质上就是一个键值对,是一种非常通用的保存用户信息的方式,可以很容易的将认证授权分离开来,前者用来表示用户是/不是什么,后者用来表示用户能/不能做什么。在认证阶段我们通过用户信息获取到用户的Claims,而授权便是对这些的Claims的验证,如:是否拥有Admin的角色。也可以这样理解,比如去游玩区游玩,认证就是看你是否有权限进入大门,而授权就是看你是否有权限玩一个项目。

认证主要与以下几个核心对象打交道:

Claim(身份信息)

ClaimsIdentity(身份证)

ClaimsPrincipal (身份证持有者)

AuthorizationToken (授权令牌)

IAuthenticationScheme(认证方案)

IAuthenticationHandler(与认证方案对应的认证处理器)

IAuthenticationService (向外提供统一的认证服务接口)

那其认证流程是怎样的呢?

(1)用户打开登录界面,输入用户名密码先行登录,服务端先行校验用户名密码是否有效,有效则返回用户实例(User)。

(2)这时进入认证准备阶段,根据用户实例携带的身份信息(Claim),创建身份证(ClaimsIdentity),然后将身份证交给身份证持有者(ClaimsPrincipal)持有。

(3)接下来进入真正的认证阶段,根据配置的认证方案(IAuthenticationScheme),使用相对应的认证处理器(IAuthenticationHandler)进行认证 。认证成功后发放授权令牌(AuthorizationToken)。该授权令牌包含后续授权阶段需要的全部信息。

2. 授权流程 

 授权就是对于用户身份信息(Claims)的验证,,授权又分以下几种:

基于Role的授权

基于Scheme的授权

基于Policy的授权

授权主要与以下几个核心对象打交道:

IAuthorizationRequirement(授权条件)

IAuthorizationService(授权服务)

AuthorizationPolicy(授权策略)

IAuthorizationHandler (授权处理器)

AuthorizationResult(授权结果)

2.那授权流程是怎样的呢?

当收到授权请求后,由授权服务(IAuthorizationService)根据资源上指定的授权策略(AuthorizationPolicy)中包含的授权条件(IAuthorizationRequirement),找到相对应的授权处理器(IAuthorizationHandler )来判断授权令牌中包含的身份信息是否满足授权条件,并返回授权结果。

可以将ASP.NET Core Identity配置为使用SQL Server数据库来存储用户名密码和配置文件等数据。当然也可以使用MongoDB等来存储对应数据

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值