网站开发建站教程详解,服装行业做推广网站,建筑工程网页模板,网站小程序app定制开发Spring Security OAuth2.0认证授权 文章目录Spring Security OAuth2.0认证授权配套资源1.基本概念1.1.什么是认证1.2 什么是会话1.2 什么是授权1.3 授权的数据模型1.4 RBAC1.4.1 基于角色的访问控制1.4.2 基于资源的访问控制配套资源
企业开发首选的安全框架Spring Security深…Spring Security OAuth2.0认证授权 文章目录Spring Security OAuth2.0认证授权配套资源1.基本概念1.1.什么是认证1.2 什么是会话1.2 什么是授权1.3 授权的数据模型1.4 RBAC1.4.1 基于角色的访问控制1.4.2 基于资源的访问控制配套资源
企业开发首选的安全框架Spring Security深入浅出 完整视频http://yun.itheima.com/course/605.html?2003sxk 配套资料https://pan.baidu.com/s/1ngq89PvQPCZIUqVxbq4WPQ 提取码uzos
2天快速入门Spring Security OAuth2.0认证授权 完整视频http://yun.itheima.com/course/597.html?2003sxk 配套资料https://pan.baidu.com/s/1w2MRKuQAdJx-eki_4CAK7w 提取码6vc5
1.基本概念
1.1.什么是认证 认证 用户认证就是判断一个用户的身份是否合法的过程用户去访问系统资源时系统要求验证用户的身份信 息身份合法方可继续访问不合法则拒绝访问。常见的用户身份认证方式有用户名密码登录二维码登录手 机短信登录指纹认证等方式。
1.2 什么是会话 用户认证通过后为了避免用户的每次操作都进行认证可将用户的信息保证在会话中。会话就是系统为了保持当前 用户的登录状态所提供的机制常见的有基于session方式、基于token方式等。 基于session的认证方式如下图 它的交互流程是用户认证成功后在服务端生成用户相关的数据保存在session(当前会话)中发给客户端的 sesssion_id 存放到 cookie 中这样用户客户端请求时带上 session_id 就可以验证服务器端是否存在 session 数 据以此完成用户的合法校验当用户退出系统或session过期销毁时,客户端的session_id也就无效了。 基于token方式如下图 它的交互流程是用户认证成功后服务端生成一个token发给客户端客户端可以放到 cookie 或 localStorage 等存储中每次请求时带上 token服务端收到token通过验证后即可确认用户身份。
1.2 什么是授权
为什么要授权 认证是为了保证用户身份的合法性授权则是为了更细粒度的对隐私数据进行划分授权是在认证通过后发生的 控制不同的用户能够访问不同的资源。 授权 授权是用户认证通过根据用户的权限来控制用户访问资源的过程拥有资源的访问权限则正常访问没有 权限则拒绝访问。
1.3 授权的数据模型 如何进行授权即如何对用户访问资源进行控制首先需要学习授权相关的数据模型。 授权可简单理解为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、权限标识、权限名称、资源名称、资源访问地址、… 修改后数据模型之间的关系如下图
1.4 RBAC 如何实现授权业界通常基于RBAC实现授权。 1.4.1 基于角色的访问控制 RBAC基于角色的访问控制Role-Based Access Control是按角色进行授权比如主体的角色为总经理可以查 询企业运营报表查询员工工资信息等访问控制流程如下 根据上图中的判断逻辑授权代码可表示如下
if(主体.hasRole(总经理角色id)){ 查询工资
}如果上图中查询工资所需要的角色变化为总经理和部门经理此时就需要修改判断逻辑为“判断用户的角色是否是 总经理或部门经理”修改代码如下
if(主体.hasRole(总经理角色id) || 主体.hasRole(部门经理角色id)){ 查询工资
}根据上边的例子发现当需要修改角色的权限时就需要修改授权的相关代码系统可扩展性差。
1.4.2 基于资源的访问控制 RBAC基于资源的访问控制Resource-Based Access Control是按资源或权限进行授权比如用户必须 具有查询工资权限才可以查询员工工资信息等访问控制流程如下
根据上图中的判断授权代码可以表示为
if(主体.hasPermission(查询工资权限标识)){ 查询工资
}优点系统设计时定义好查询工资的权限标识即使查询工资所需要的角色变化为总经理和部门经理也不需要修改 授权代码系统可扩展性强。 权限精度不同需要进行的操作也不同。角色权限的精度比资源权限精度小精度越高权限控制相对方便些。