一.SpringSecurity基础-认证和授权概述

1.认证授权概述

为了给学习SpringSecurity打下基础,我们来回顾一下传统的认证授权流程

1.1.什么是认证

认证是对主体/用户身份的确认,在我们的生活中随处可见认证场景,如:小区门禁卡,人脸识别,指纹识别等都是对用户身份的确认,在传统的应用中我们通常使用用户名/用户ID和密码来进行用户的身份确认,即登录,但登录的方式不仅限制于用户名/密码的方式,认证是我们应用的第一道安全门,所以对于整个系统的安全来说显得极其重要。

1.2.什么是授权

控制不同的用户访问不同的权限 ,用户认证成功后,就可以对某些资源进行访问,但是不同的用户有不同的资源访问权利,那么对用户的授权也都不一样。如:公司老板拥有对公司的所有权限,而部门主管只能有对自己管理的部门的权限,所以在程序中授权的过程就是赋予不同用户不同权限的过程。

1.3.什么是RBAC

RBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

举例:可以把部门的展示,添加,修改,删除等资源或功能打包成角色“部门管理”,然后把“部门管理”这个角色赋予某个用户,那么这个用户就是部门管理员,拥有部门的相关权限。

RBAC 认为授权实际上是Who 、What 、How 三元组之间的关系,也就是Who 对What 进行How 的操作。

  • 主体(Who ) :是权限的拥有者或主体(如:User,Role)。
  • 资源 (what): 是操作或对象,如:页面,菜单,按钮,控制器(controller,hanler)等
  • 权限(how) :具体的权限, 如:张三可以删除员工。 那么删除员工就是一个权限

2.基于session的认证授权

2.1.认证流程

基于Session的认证方案即当用户认证成功之后将认证信息缓存在session中,主体(用户)在发起资源访问时需要进行是否做过认证校验,即检查session中是否有缓存认证信息。详细的认证流程如下图:

认证流程

在这里插入图片描述

  1. 客户端(浏览器)提交用户名和密码发起认证请求
  2. 请求中的认证信息被封装成对象(User),控制层(controller)接收到认证请求
  3. Controller调用服务层(Service)的认证逻辑进行认证,传入User
  4. Service调用持久层(Dao)根据传入的User中的账号查询数据库中的认证信息(User)
  5. Service获取到持久层返回的User和请求传入的User进行密码比对
  6. 认证成功将认证信息(User)和用户的权限信息通过UserContext存储到(Session中)
  7. 返回认证结果给客户端
认证检查

在这里插入图片描述

当用户再次发起请求,拦截器会负责检查是否已经完成认证,通过UserContext从Session中获取User对象进行判断,如果没认证就会返回错误信息,如果已经完成认证就直接访问url对应的资源,返回资源给客户端。

2.2.授权流程

授权是约束用户对资源的访问权限,通过系统事先需要对资源做好授权操作,即约定好哪些资源需要什么样的权限才能访问。并且平台的用户需要被分配好其拥有的权限(用户/角色/权限) , 在用户认证成功之后即为用户加载其拥有的权限列表和认证信息一起封装成对象缓存到session中 ,当用户发起资源请求时,除了需要做认证检查还需要做权限检查,即判断当前认证用户所拥有的权限列表中是否拥有当前访问的资源所需要的权限。详细授权流程如下如:

在这里插入图片描述

  1. 认证通过,加载当前用户的权限列表,和认证信息一起封装成对象存储到session中
  2. 服务端登录检查拦截器,校验是否已经认证(从session获取认证信息)
  3. 服务端权限检查拦截器,校验是否拥有访问权限(用户的权限列表是否包含资源所需要的权限)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨家巨子@俏如来

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值