spring oAuth2.0

文章讲述了Web应用中用户认证的两种主要方式——基于session和基于token,以及授权的模型,包括资源、权限、角色和RBAC(基于角色的访问控制)的概念。在RBAC中,权限是根据用户的角色来分配的,而资源和权限在企业开发中常被合并管理。
  • 会话
    用户认证通过后,为了避免用户的每次操作都进行认证可将用户的信息保证在会话中。会话就是系统为了保持当前用户的登录状态所提供的机制,常见的有基于session方式,基于token方式等。
    基于session的认证方式:
    用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话)中,发给客户端的session_id存放到cookie中,这样用户客户端请求时带上session_id就可以验证服务器端是否存在session数据,以此完成用户的合法校验,当前用户退出系统或session过期销毁时,客户端的session_id也就无效了
    基于session的认证机制由servelt规范制定,Servlet容器已实现,用户通过HttpSession的操作方法即可实现,如下是HttpSession的相关的API
    HttpSession getSession(Boolean create) 获取当前httpsession对象
    void setAttribute(String name,Object value) 向session中存放对象
    object getAttribute(String name) 从session中获取对象
    void removeAttribute(String name) 移除session中的对象
    void invalidate() 使HttpSession失效

基于token的认证方式:
用户认证成功后,服务端生成一个token发给客户端,客户端可以放到cookie或localStorage等存储中,每次请求时带上token,服务端接收到token通过验证后即可确认用户身份

  • 授权的数据模型
    授权可以简单理解为Who对What(Which)进行How操作,包括如下:
    Who,即主体(Subject),主体一般是指用户,也可以是程序,需要访问系统中的资源
    What,即资源(Resource),如系统菜单、页面、按钮、代码方法、系统商品信息、系统订单信息等。系统菜单,页面、按钮、代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个url;系统商品信息、系统订单信息都属于实体资源(数据资源),实体资源由资源类型和资源实例组成,比如商品信息为资源类型,商品编号为001的商品为资源实例
    How,权限/许可(Permission),规定了用户对资源的操作许可,权限离开了资源没有意义。如用户查询权限,用户添加权限,某个代码方法的调用权限,编号为001的用户的修改权限等,通过权限可知用户对哪些资源都有哪些操作许可。

主体(用户id,账号,密码、…)
资源(资源id,资源名称、访问地址。。。。。)
权限(权限id,权限标识,权限名称,资源id)
角色(角色id,角色名称。。。)
角色和权限的关系(角色id,权限id)
主体(用户)和角色的关系(用户id,角色id,。。。。)在这里插入图片描述

通常企业开发中将资源和权限合并为一张权限表:
资源(资源id,资源名称,访问地址、…)
权限(权限id、权限标识、权限名称、资源id…)
合并为
权限(权限id,权限标识,权限名称,资源名称,资源访问地址)
在这里插入图片描述

RBAC:
1、基于角色的访问控制(Role-Based Access Control)是按角色进行授权,比如:主体的角色为总经历可以查询运行报表,查询员工工资信息,访问控制流程如下:
在这里插入图片描述
根据上图中的判断逻辑,授权代码可以标识如下:

if(主体.hasRole("总经历角色id")){
查询工资
}

如果上图中查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为“判断用户的角色是否是总经历或部门经历”,修改代码如下:

if(主体.hasRole("总经理角色id") || 主体.hasRole("部门经历角色id")){
	查询工资
}

2、基于资源的访问控制
基于资源的访问控制是按资源或权限进行授权,比如:用户必须具有查询工资权限才可以查询员工工资信息等,访问控制流程如下:
在这里插入图片描述

if(主体.hasPermission("查询工资权限标识")){
		查询工资
}
	```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值