首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

位演算实现ACL授权与认证过程的原理解析

2013-10-01 
位运算实现ACL授权与认证过程的原理解析在任何权限管理系统中,ACL(Access Control List)都是非常重要且有

位运算实现ACL授权与认证过程的原理解析

在任何权限管理系统中,ACL(Access Control List)都是非常重要且有不可或缺的。权限管理主要包括授权与认证两大部分,下面就看ACL是如何实现授权与认证的。


先需要知道什么是授权与认证


关于授权比较详细的解释:


1、授权,指将权限授予角色或用户

   a)如果用户A拥有角色B、角色C,那么,缺省的情况下,用户A将拥有被分配给角色B和角色C的所有权限(即默认情况下,用户A继承其拥有的角色所具有的所有权限);

   b)如果用户拥有多个角色,那么用户的权限是这些角色权限的合集;

   c)如果用户拥有多个角色,而且角色之间的授权有冲突(比如对同一个资源的同一个操作,一个角色为“允许”,另外一个角色为“不允许”),将以优先级别高的角色(所谓优先级别,也就是对于这个用户所拥有的角色而言,是有顺序的,同一个角色在不同的用户那里可能拥有不同的优先级);

   d)除了可以对角色进行授权外,也可以针对用户进行授权,也就是说,将权限授予用户。针对某个资源的所有操作,我们可以设置这些权限对用户来说是“继承”或“不继承”;

       i.继承:意思是这些权限将使用其(即用户)所拥有的角色的权限,而不使用其(即用户)单独设置的权限,

       ii.不继承:意思是这些权限将使用其单独设置的权限,而不使用其所拥有的角色的权限。


一言以蔽之:授权就是颁发许可证的过程。比如导游证,你有了导游证,你就可以上岗;如果没有,对不起,你玩去。授权就相当于与授予你导游证的过程。


注意需要的说明一点:什么是角色?这里有了用户,为什么还要有角色,用户与角色有什么不同?

角色是抽象的概念。角色可以理解为职位,比如系统管理员,部门经理等这些职位,而用户就是具体的人。一个用户可以身兼多职,一个职务也可以有多个人来负责。所以人员与角色是多对多的关系。


关于认证比较详细的解释:


2、认证,指用户访问资源的某些操作时,根据授权,判断是否允许用户的访问

   a)在用户访问的时候,需要进行即时的判断(是否有权访问)

   b)应该提供查询的功能,可以查询某个用户所拥有的所有权限


一言以蔽之:认证是一个检查过程。给你颁发的导游证,上岗前还需要对你进行检查,如果检查出来你没有导游证,对不起,你不能上岗。


ACL在代码中的体现


知道了什么是授权与认证,下面看授权与认证如何在代码中体现。下面是一个访问控制类ACL的实现。

符号

 描述

 运算规则        

&      

 与

两个位都为1时,结果才为1

|  

 或    

两个位都为0时,结果才为0

^    

异或

两个位相同为0,相异为1

~   

取反

0变1,1变0

<< 

左移

各二进位全部左移若干位,高位丢弃,低位补0

>> 

右移

各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

注意以下几点:

1.在这6种操作符,只有~取反是单目操作符,其它5种都是双目操作符。

2.位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。


总结


本文主要介绍了授权与认证的概念,位运算基础的简单介绍,如何通过位运算进行授权与认证。大家可以对照最后给出的位运算表格,对授权和认证过程进行比对,看它们具体是如何实现的。

其实一条acl授权记录中除了aclState和aclTriState之外,还主要记录了:角色、资源和授权三条信息。具体内容在后文介绍。

2楼zs15932616453昨天 23:17
这部分还是很有用的,值得深入!
Re: liu76502305157分钟前
回复zs15932616453n嗯,值得深入。
1楼liuyanlinglanq昨天 21:39
学习

热点排行