Alfresco权限机制
一. Alfresco平台权限设计:
Alfresco平台中权限粒度细化到对象级别,争对具体对象,又将权限分为以下18种基本权限,
如下表:
权限名 描述
ReadProperties 读取对象的元数据
WriteProperties 写对象的元数据
ReadChildren 读下级节点
ReadContent 读对象内容(实体文件)
WriteContent 写对象内容
ExecuteContent 执行对象内容
DeleteNode 删除对象
DeleteChildren 删除下级对象
CreateChildren 创建下级对象
LinkChildren 将其它对象挂接到当前对象下
DeleteAssociations 删除关联对象
ReadAssociations 读取关联对象
CreateAssociations 创建关联对象
ReadPermissions 读取当前对象的权限集
ChangePermissions 修改当前对象的权限集
Flatten Lock 对象加锁 Unlock 对象解锁
在这18种基本权限上,又可以扩展多个权限集。平台默认的权限集包括以下8个常用应用权限集,如下表:
权限集名称 描述 包含元子权限
Read 读权限 ReadProperties,ReadChildren,ReadContent
Write 写权限 WriteProperties,WriteContent
Delete 删除权限 DeleteNode,DeleteChildren
AddChildren 添加子节点权限 CreateChildren,LinkChildren
Execute 执行权限 ExecuteContent
CheckIn 签入权限 Unlock
CheckOut 签出权限 Lock
CancelCheckOut 取消签出权限 Unlock
在以上8种常用权限集的基本上,又可以扩展多个角色权限集。平台默认的权限集包括:
权限集名称 描述 包含的子权限集
Consumer 使用者 Read
Editor 参与者 Consumer,Write,CheckOut,ReadPermissions
Contributor 协调员 Consumer,AddChildren,ReadPermissions
Collaborator 合作者 Editor,Contributor
Coordinator 系统管理员 拥有所有权限
Administrator 超级管理员 拥有所有权限
RecordAdministrator 记录管理员 ReadProperties,ReadChildren,WriteProperties,ReadContent,DeleteChildren,CreateChildren,LinkChildren,DeleteAssociations,CreateAssociations
二. Alfresco平台中用户、组的设计 Alfresco中用户可以隶属于多个组,一个组也可以包括多个成员(组和用户);
三. Alfresco平台ACL(访问控制列表)机制 Alfresco中,通过ACL机制实现对文档的权限控制。 ACL包含多个用户、组的访问权限,如下表:
成员名(组或用户) 权限集名
Group1 Consumer
User1 Editor
User2 Read
注:组中的所有成员拥有所在组的权限。
四. Alfresco中权限机制设计:
内容库中的每一个对象(包括文件夹和文件等)都关系一个ACL对象。当用户访问内容库对象的时候,先根据该对象对应的ACL里查找当前用户对应该对象的权限。判断当前用户是否拥有操作该对象的相关权限,从而实现内容库对象的权限管理。 Alfresco中的权限继承机制允许内容库对象继承父级节点的权限,因此,在对象创建的时候不必为每一个对象分配ACL。只要为目录结构分配好权限,在对象创建以后默认继承父级节点权限。通过用户、组、ACL的灵活配置,可以实现复杂的内容安全控制。
五. Alfresco中权限机制的具体实现在alfresco底层,把对象的操作规定了一个接口:NodeService 将对象的各种操作抽象为几种基本方法,如:getProperties();,setProperties();将这些方法进行拦截,拦截的工作是通过当前操作用户,当前操作的对象id,当前执行的操作,判断是否可以调用该方法,从而实现在底层实现对对象权限的控制。