`
情情说
  • 浏览: 38897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单点登录与权限管理本质:权限管理介绍

 
阅读更多

 

前面几篇文章介绍了单点登录的本质,包括cookie、session、重定向的基本概念,单点登录的基本交互流程,cookie的重要性和安全问题。单点登录能够确保:必须通过身份验证后,才能访问网站,且访问多个系统时,只需要登录一次。

该系列的完整写作计划,可见:系列概述

一般系统都会有多个角色,不同角色可访问的系统功能不同,通过给用户分配不同角色,决定用户可访问的系统功能。

继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,本篇说说权限管理,主要从以下几个方面介绍:

  • 权限管理的一般模型
  • 权限验证范围
  • Shiro基本架构和扩展点
  • 系列第一部分总结

权限管理的一般模型

权限验证的过程比较简单,描述如下:

  1. 用户登录成功后,会将自己的个人信息和权限信息,保存到session中,可以存储在内存、redis中;
  2. 用户访问其他页面时,会根据访问路径,与用户权限数据进行匹配,验证是否有权限访问;
  3. 如果有权限,显示访问页面,如果无权限,提示用户无权访问;

权限验证基本流程

如何管理和分配用户权限呢,一般会抽象出如下实体概念:

  1. 用户:访问系统的主体;
  2. 角色:分配权限的最小单元,通过角色给用户分配权限;
  3. 权限菜单:权限的最小单元,一个角色配置多个权限菜单;

权限管理实体

另外,为了方便权限管理,会单独抽取一个服务「用户中心」,统一管理用户、角色和各个系统的权限菜单。权限菜单由各个子系统同步到「用户中心」或者提供批量导入的功能,权限菜单标识的规则要提前约定好,一致的菜单标识有助于权限拦截的判断。

简单截取几个我们项目中的页面,加深下理解:

  1. 添加用户时,需要选择角色

  2. 添加角色时,需要选择权限菜单

  3. 权限菜单由各个子系统同步过来

权限验证范围

用户拥有了访问和操作某些数据的权限,但不代表可以访问所有的数据,可能只能访问和操作自己的数据,可能只能访问和操作组内的数据,这是更细粒度的权限控制。

权限验证的位置可能在前端、可能在后端。前端根据当前用户的权限,显示不同的菜单项、操作按钮,后端根据当前用户的权限,验证操作的合法性,返回可访问的数据集合,权限验证位置也要考虑全面。

控制粒度

比如有这样一个场景:有一个查询订单接口供外部调用,可根据订单编号返回订单详情。

如果订单编号有规则可寻,且后端不对订单所属人进行判断,就可以查看其他人订单的信息,所以,需要更细粒度的判断,验证订单的所属人。

另外可以通过角色、菜单权限2个粒度进行权限验证:

<shiro:hasPermission name="permission1">
    <h2>拥有permission1权限可以看到这里</h2>
</shiro:hasPermission>
<shiro:hasRole name="role">
    <h2>拥有role角色可以看到这里</h2>
</shiro:hasRole>
验证位置

为了让用户体验足够好,用户无法操作的菜单项和操作按钮不需要再显示了,需要在前端进行验证,比如添加用户的操作:

<shiro:hasPermission name="user:add">
    <a href='user/add'>添加用户</a>
</shiro:hasPermission>

只有前端验证也不行,可以通过模拟HTTP请求绕过前端访问,后端也要进行验证,shiro提供了拦截器进行统一处理。

Shiro基本架构和扩展

Shiro是apache下的开源软件,一个的安全框架,对用户的身份和权限进行管理和验证,看看官网对它的概述:

Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management

本篇不会介绍Shiro的细节,只是通过介绍Shiro的基本组件,对应到权限管理的一般模型。

Shiro的基本架构如下:

  1. Subject:当前与用户交互的实体,包括用户、第三方服务、corn任务等,使用者只需通过该对象提供的一系列方法,统一与后端的安全管理模块交互, 对应模型中的「用户」;
  2. Authenticator:负责验证用户身份,用户尝试登陆时,会调用它的方法进行认证,它会根据配置,调用一个或多个Realm进行用户名和密码校验,对应模型中的「用户登陆操作」;
  3. Authorizer:负责验证用户访问权限,用户访问一个页面时,可以根据它提供的方法验证用户的权限,它也会调用一个或多个Realm获取用户的权限数据,对应模型中的「是否有权限访问」;
  4. SessionManager:提供一种健壮的方式管理用户会话,这是Shiro的一个独特特性,如果是一个Web/Servlet应用,默认会使用已有的会话管理,如果不是Web应用,Shiro会使用内置的会话管理器。它会调用SessionDAO进行会话持久化,对应模型中的「Session管理」;
  5. CacheManager:Shiro在Authenticator、Authorizer、SessionManager模块,会访问后端的存储系统,使用缓存管理可以提高数据访问的性能,可以很方便的与第三方缓存框架集成,比如Ehcache,Redis等;
  6. Realms:是程序和用户数据、权限数据的桥梁,以插件的方式提供扩展,可以配置一个或多个Realm为Authenticator和Authorizer模块提供数据支持;
  7. Cryptography:提供数据加解密的支持,它封装了相关接口,更易理解和使用;

Shiro基本架构

通过上面的介绍可以看出,Shiro的基本组件与总结的「一般模型」是对应的,它帮助我们实现了整个用户验证、权限验证、会话管理的流程,同时提供缓存管理、加解密封装提高了性能和安全性,通过Realm插件的方式支持扩展,自定义实现类获取用户、权限数据。

以用户身份认证为例,说明几个组件的交互过程:
基本交互过程

系列第一部分总结

到此,系列第一部分「单点登录与权限管理本质」就介绍完了,通过5篇文章,把自己想说的本质说完了,基础概念肯定会有遗漏,后续部分学习、总结过程中,会不断补充。

还原技术的本质,把复杂的技术、框架抽象来看,形成一个相对简单、容易理解的视图,能够更好的理解、扩展、应用它。

对于单点登录,通过cookie、http重定向,可自动进行跳转和身份验证,达到登录一次,可访问多个子系统的效果。

对于权限管理,了解其一般的模型和验证流程,加上成熟的实现框架,可以快速、全面、稳定地实现它,并在此基础上进行扩展。

另外,cookie、用户的账号权限信息很重要,要不断积累安全方面的知识,提高其安全性。

接下来的第二部分主要是实践,会仿照我们的系统做一个DEMO,利用CAS、Shiro框架实现单点登录和权限管理。另外,会抽象出一个「用户中心」,管理用户、角色、权限菜单,各个子系统通过同步方式同步自己的权限菜单。

情情说

 

1
0
分享到:
评论

相关推荐

    基于jsp的权限管理系统,myeclipse工程

    5. **权限框架**:可能使用了Spring Security、Apache Shiro等权限管理框架,实现用户认证(Authentication)和授权(Authorization)功能。 6. **数据库交互**:通常通过JDBC或者ORM框架(如Hibernate、MyBatis)...

    web业务系统权限控制

    #### 五、实现SSO(单点登录) SSO是一种让用户在多个应用系统之间无需重复登录的技术。实现SSO的关键在于构建统一的认证中心,具体步骤如下: 1. **统一的登陆服务**:建立一个独立的登陆服务,供多个业务系统共同...

    福师12秋【管理学概论】练习题集.doc

    32. 授权:让员工参与决策,提高积极性。 33. 管理与改革:不同概念,管理是日常运营,改革涉及变革。 34. 组织效率:取决于各部门的协同而非单个部门。 35. 领导风格:不同情境下,领导者可能需要调整风格以适应...

    COM本质论图书+源代码

    《COM本质论》一书深入浅出地介绍了以下关键知识点: 1. **COM基础**:书中首先讲解了COM的基本概念,如组件、接口、实例化、引用计数等,这些都是理解COM的基础。COM组件通过全局唯一标识符(GUID)来唯一识别,...

    管理学选择、判断题.pdf

    1. 管理的本质:管理是一项让他人与自己共同达成既定目标的任务,是所有有组织集体活动中不可或缺的元素。它要求管理者具备领导力和创造性,以高效地实现目标。 2. 管理的艺术性:管理不仅需要运用理论知识,还需要...

    java开发oa办公系统源码-ming:ming项目是基于SpringBoot2的一整套后端管理平台,提供整套公共微服务服务模块:集中权限管理

    项目是基于SpringBoot2的一整套后端管理平台,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、人事办公。旨在通过实战分享个人经验简洁高效,减少过渡封装,展现技术本质,以技术服务于业务。 ...

    2021-2022年收藏的精品资料专升本《工程项目管理》-11042550试卷-20171010201015.docx

    【知识点详解】 1. **项目管理的分类**:根据题目描述,项目管理可按照参与...以上内容涵盖了项目管理的多个方面,包括管理分类、项目特性、生命周期管理、监理职责、项目组织结构、项目范围、质量管理等多个知识点。

    优秀资料(2021-2022年收藏)现代管理学复习最新完整资料.doc

    12. 权力与职权:权力是组织中通过授权赋予个人的资源支配能力,职权则是通过正式的组织结构和程序获得的管理权限。 13. 管理幅度:管理幅度是指管理者能有效管理和指导的下属人数,直接影响管理效率和沟通效果。 ...

    COM本质论 潘爱民

    ### COM本质论——潘爱民 #### 知识点概览 1. **COM概述** - COM的历史和发展背景。 - COM的核心概念和技术特点。 2. **COM基础原理** - 对象、接口和类的概念。 - 接口查询机制。 - 引用计数管理。 3. **...

    Essntial COM 《COM本质论》潘爱民 译

    在《COM本质论》中,潘爱民详细介绍了以下几个关键知识点: 1. **COM基本概念**:书中首先阐述了COM的基本概念,如组件、接口、IUnknown接口、类工厂、引用计数等,这些都是理解COM的基础。 2. **接口与IUnknown**...

    JSP做的简单商品管理模块

    7. **用户认证与授权**:对于一个商品管理系统,可能需要对用户进行登录验证,并根据角色权限限制操作。这涉及会话管理、cookie使用以及权限检查等。 8. **响应式设计**:为了适应不同设备的屏幕尺寸,商品管理模块...

    润乾报表可用授权文件

    在管理润乾报表的授权文件时,需要注意以下几点: 1. 保护文件安全:授权文件应妥善保管,防止丢失或被盗用,避免非法扩散。 2. 合理分配:根据业务需求和员工数量,合理分配许可证,确保每个使用者都有对应的合法...

    《COM本质论》源码

    侯捷先生的《COM本质论》通过实例程序和详细说明,不仅介绍了上述概念,还深入讲解了COM的实现细节,如内存管理、错误处理、接口版本控制等,是学习COM技术的重要参考资料。通过阅读和实践书中的例子,读者可以更...

    2021年管理学考试复习题库(含答案).pdf

    【知识点详解】 1. 正式组织与非正式组织: 在管理学中,正式组织是由明确的规章制度、职务划分和层级结构构成的组织结构,它们通常有明确的目标和职责分配。非正式组织则是自然形成的,基于个人间的共同兴趣、...

    com 本质论 essential com PDF

    10. **安全性**:COM提供了一套安全机制,如访问控制和权限管理,确保组件在交互过程中的安全性。 通过阅读《COM本质论》,读者不仅可以掌握COM的基本原理,还能了解到如何设计和实现符合COM规范的组件,以及如何在...

    一流网络JSP网络管理系统 v1.0_yljsp10.rar

    此系统可能包括用户管理、数据处理、权限控制等功能,对于学习和实践JSP编程以及了解网络管理系统的构建流程具有很高的参考价值。 首先,我们来深入了解JSP(JavaServer Pages)技术。JSP是一种动态网页开发技术,...

    2017下半年系统规划与管理师真题上午综合知识试题与答案【完整版】.pdf

    ### 知识点总结 #### 1. 信息的价值与质量属性 - **知识点概述**: - 信息的本质及其价值。 - 信息质量的关键属性:精确性、完整性、可靠性、及时性、经济性、可验证性和安全性。 - **详细解释**: - **信息的...

    公司管理系统的jsp代码的实现

    【公司管理系统的jsp代码实现】是一个基于Java Server Pages(JSP)技术构建的轻量级应用,用于小型公司的日常管理。JSP是Java平台上的一个动态网页开发技术,它允许开发者将HTML、CSS、JavaScript与Java代码混合...

    JSP网络开发实用工程案例-信息管理系统

    信息管理系统通常包括用户管理、数据管理、权限控制等多个模块,是企业或组织内部日常运营不可或缺的一部分。在JSP中,我们可以通过以下关键知识点来构建这样的系统: 1. **Servlet基础**:JSP的本质是Servlet,它...

Global site tag (gtag.js) - Google Analytics