基于 rbac 和 acegi 技术的用户权限控制管理系统
DESCRIPTION
基于 RBAC 和 ACEGI 技术的用户权限控制管理系统. 软件工程 200604 班 徐启祥 导师:熊丽荣老师. 毕业设计任务. 设计一个通用的面向 SSH 框架项目的用户权限管理系统,基于 SSH 框架的项目采用 RBAC 和 ACEGI 相结合的权限访问控制方式 期望目标 通过毕设开发的系统,能够对基于 SSH 框架的应用系统进行权限设置和管理. 1. 2. 3. 4. 5. 6. 相关技术介绍. RBAC 和 ACEGI 的扩展. 管理系统设计与实现. 管理系统的应用. 总结. 致谢. 目录. 相关技术. 访问控制策略 - PowerPoint PPT PresentationTRANSCRIPT
基于 RBAC和 ACEGI技术的用户权限控制管理系统
软件工程 200604 班 徐启祥 导师:熊丽荣老师
Company Logo
毕业设计任务
设计一个通用的面向 SSH 框架项目的用户权限管理系统,基于 SSH 框架的项目采用 RBAC 和 ACEGI 相结合的权限访问控制方式
期望目标 通过毕设开发的系统,能够对基于 SSH框
架的应用系统进行权限设置和管理
Company Logo
目录
相关技术介绍1
RBAC和 ACEGI的扩展2
管理系统设计与实现3
管理系统的应用4
总结5
致谢6
Company Logo
相关技术
访问控制策略 自主访问控制( DAC) 强制访问控制(MAC) 基于角色访问控制( RBAC)
安全框架 ACEGI
Company Logo
访问控制策略
DAC 自主性 传递性
MAC 安全级别 规则:不允许低安全级别的用户读高安全级别的信息,也不
允许高安全级别的信息写入低安全级别的区域,即信息只能向高安全级别的方向流动
RBAC 最小权限原则 职责分离原则
Company Logo
ACEGI安全框架
体系结构图
Company Logo
ACEGI安全框架认证时序图
:User authencationProcessingFilter Authencation authencationManager
ContextHolder AuthencationException
login
getCredentials()
getPrincipal()
save
authencation
getAuthorities()
save
failure
Company Logo
RBAC模型引入
ACEGI 框架用户、角色(权限)和资源关系
用户 U0 用户 U1
资源 0 资源 1
公共权限 P0 公共权限 P1 权限 P3公共权限 P2
资源 2
Company Logo
RBAC模型的引入
ACEGI 框架引入 RBAC 模型后
用户 U0 用户 U1
资源 0 资源 1
公共权限 P0 公共权限 P1 权限 P3
公共角色 R0 角色 R1
公共权限 P2
资源 2
Company Logo
ACEGI的扩展
ACEGI 原有的访问控制配置
Company Logo
ACEGI的扩展 UrlFilterInvocationDefinitionSource 实现
-url : string-cad : ConfigAttributeDefinition
UrlEntryHolder
ConfigAttributeDefinition
MappingSqlQuery
+SecuredUrlDefinition()+mapRow() : object
SecuredUrlDefinition
+lookupAttributes() : ConfigAttributeDefinition+getConfigAttributeDefinitions() : List<ConfigAttributeDefinition>+afterPropertiesSet()+getRdbmsEntryHolderList()+refreshWebResdbCache()
UrlFilterInvocationDefinitionSource
AbstractFilterInvocationDefinitionSource
1
1该类是 URL 资源访问控制的ObjectDefinitionSource
Company Logo
ACEGI的扩展 扩展后的配置
Company Logo
ACEGI的扩展 MethodFilterInvocationDefinitionSource(FUNCTION资源) ——MethodSecurityInterceptor
AOP代理
+getAdvicesAndAdvisorsForBean() : object[]+isMatch() : Boolean+afterPropertiesSet()
RdbmsBeanNameAutoProxyCreatorBeanNameAutoProxyCreator
+AopBeanNames()+mapRow() : object
AopBeanNames
MappingSqlQuery
1
1
Company Logo
管理系统的设计用户浏览器
WEB 服务器 用户身份认证
ACEGI 过滤器访问控制
权限控制管理系统
数据库
验证成功
状态数据读取 / 更新
基本表管理
用户名、密码
验证失败跳转错误页面
HTTP 请求
返回响应
会话过程
终端 Web 服务器 基于 RBAC 和 ACEGI 技术的权限管理
系统的总体概述
Company Logo
管理系统的设计
用户权限控制管理系统的总功能图
Company Logo
管理系统的设计数据库设计
Users
PK id
name passwd status create_datetime update_datetime
Roles
PK id
name descn create_datetime update_datetime
Permissions
PK id
name type descn create_datetime update_datetime
Resources
PK id
name type res_string descn url_seq target_bean_id create_datetime update_datetime
User_Role
PK user_idPK role_id
Role_Permission
PK role_idPK permission_id
permission_Resource
PK permission_idPK resource_id
bean_names
PK id
name class_name status create_datetime update_datetime
Company Logo
管理系统的实现
web 层 WebWork
ActionServlet
ActionJSP
业务层 Spring
Spring IoC
持久层 Hibernate
Hibernate DAO
PO
数据库
系统架构图
Company Logo
管理系统的实现ActionSupport
BaseAction
<<extends>>
+list() : string+addResource() : string+saveAddResource() : string+editResource() : string+saveEditResource() : string+deleteResource() : string
-resourceService : ResourceService
ResourceAction
<<extends>>+getResources() : List<Resource>+getResource() : Resource+getResourcesByType() : List<Resource>+saveResource() : void+deleteResource() : void+saveMergeResource() : void+isExistByName() : Boolean+isExistBySeq() : Boolean
<<接口>>ResourceService
+setId() : void
-id : string-name : string-type : string-description : string-value : string-urlSeq : int-permissions-targetBean
Resource
ResourceServiceImpl BaseServiceImpl
<<接口>>BaseService
+getAllResources() : List<Resource>+getResource() : Resource+getResourcesByType() : List<Resource>+saveResource() : void+removeResource() : void+saveMergeResource() : void+isExistByName() : Boolean+isExistBySeq() : Boolean
<<接口>>ResourceDao
ResourceDaoImpl
BaseDaoImpl
<<接口>>BaseDao
+getHibernateTemplate()+setSessionFaction()
HibernateDaoSupport
<<invoke>>
<<implements>>
<<invoke>>
<<extends>>
<<implements>>
<<implements>>
<<extends>>
<<implements>>
<<extends>>
<<uses>>
资源配置模块类图
Company Logo
管理系统演示界面
系统登录界面登录后主页面资源管理页面添加 URL 资源页面成功添加 URL 资源页面用户 / 权限管理页面 编辑角色页面 用户管理页面
Company Logo
管理系统的应用提供了 ACEGI 扩展包 rbac_acegi.jar 在 SSH 架构应用中配置同 ACEGI 配置相似
配置 web.xml 的代码段
Bean 配置
Company Logo
管理系统的应用
ACEGI 扩展部分的配置
缓存配置objectDefinitionSource 配置拦截器配置
代理配置
Company Logo
管理系统的应用 测试项目权限配置
Company Logo
管理系统的应用——测试项目演示
主页页面点击“显示用户”,无权访问的错误页面用户 www 登录后主页页面再次点击“显示用户”,出现用户列表页面用户 www 查看新闻页面
Company Logo
总结
针对 ACEGI 权限管理的不足,对其进行扩展使它配置信息不是直接写入配置文件,而是通过配置从数据库读取信息,能达到动态管理要求
针对现阶段流行的框架,开发设计出一个对基于 SSH 框架通用的权限控制管理系统, SSH 框架的应用能够利用管理系统进行自身的用户权限控制的管理
该系统基本完成了毕业设计的要求,当然还存在不足有待改善
Company Logo
致谢最后,感谢我的指导老师熊丽荣老师,感谢你一
直以来对我们的信任与支持,在毕业设计阶段一直关心我们的进度,能够安排一周一次的会面与讨论,为我们提供参考意见。