Shiro权限管理框架(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014793522/article/details/51692152

权限管理:

 1.什么是权限管理:基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略可以访问而且只能访问自己被授权的资源。

   权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。


 2.用户身份认证

   概念:身份认证就是判断一个用户是否为合法用户的处理过程。最常用的简单的身份认证是系统通过核对用户输入的用户名和密码,看是否与系统中存储的该用户的用户名密码一致,来判断用户的身份是否正确。

 用户名密码身份认证流程 如下:

  

图中的关键对象:

   Subject:主体(访问系统的用户,主体可以是用户程序等进行认证的都是主体)

   Principal:身份信息(是主体(subject)进行身份认证的标识,标识必须具有唯一性,如用户名,一个主体可以有多个身份,但必须有一个主身份)

   credential:凭证信息(是只有主体自己知道的安全信息,如密码)


  3.授权

    概念:授权就是访问控制,控制谁能访问那些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的


  4.授权流程

  

  授权简单理解为who对(which)进行(How)操作

  图中关键对象含义

  who:就是主体(Subject),主体需要访问系统中的资源。

  what:资源(Resource),如系统菜单,按钮,类方法等。

  How:权限/许可(Permission),规定了主体对资源的操作许可,权限离开资源没有意义,如用户查询权限、添加权限、删除权限等通过权限可知主体对那些资源都有那些操作许可。

  权限分为粗颗粒和细颗粒,粗颗粒权限是指对资源类型的权限,细颗粒权限是对资源实例的权限。

   主体 资源 权限关系如图

   


  5.权限模型

   对上面的主体、资源、权限通过数据模型表示

   主体(账号密码 )

   资源(资源名称 访问地址)

   权限(权限名称 资源Id)

   角色(角色名称)

   角色和权限关系(角色Id  权限ID)

   主体和角色关系(主体Id 角色Id) 


    


企业开发中通常将资源和权限表合并为一张权限表

 

   资源(资源名称 访问地址)    权限(权限名称 资源Id)  合并为

   权限(权限名称 资源名称 资源访问地址)

  


上图中常被称为权限管理的通用模型,不过企业在开发中根据系统自身的特点会对上图进行修改,但是用户,角色,权限,用户角色关系角色权限关系是需要理解的。

   6. 权限分配

   对主体分配权限,主体只允许在权限范围内对资源进行操作,比如A用户分配查询商品权限,A用户只能对商品进行查询。

   权限分配的数据通常需要持久化,根据上面的模型创建表并将用户的权限信息存储在数据库中。

    7.权限控制

   用户拥有了权限即可操作权限范围内的资源,系统不知道主体是否具有访问权限需要对用户的访问进行控制。

    8.基于角色的访问控制

 RBAC基于觉得的访问控制(Role-Based-Access-Contr) 是以角色为中心的进行访问控制。比如角色为经理的可以查询企业所有信息等等

   使用RBAC的缺点:以角色进行访问控制粗度较粗,系统可扩展性差。

   9. 基于资源的访问控制

    RBAC基于资源的访问控制(Resource-Based-Access-Control)是以资源为中心进行访问控制。

   优点:系统设计时定义好查询的权限标识,判断逻辑不用修改 系统的可扩展性强

10.权限管理解决方案

 10.1什么是粗颗粒度和细颗粒度

       对资源类型的管理称为粗颗粒度权限管理,即只控制到菜单、按钮、方法。

       对资源实例的控制称为细颗粒度权限管理,即控制到数据级别的权限。

猜你喜欢

转载自blog.csdn.net/u014793522/article/details/51692152