基于 RBAC 和 ACEGI 技术的用户权限控制管理系统

Preview:

DESCRIPTION

基于 RBAC 和 ACEGI 技术的用户权限控制管理系统. 软件工程 200604 班 徐启祥 导师:熊丽荣老师. 毕业设计任务. 设计一个通用的面向 SSH 框架项目的用户权限管理系统,基于 SSH 框架的项目采用 RBAC 和 ACEGI 相结合的权限访问控制方式 期望目标 通过毕设开发的系统,能够对基于 SSH 框架的应用系统进行权限设置和管理. 1. 2. 3. 4. 5. 6. 相关技术介绍. RBAC 和 ACEGI 的扩展. 管理系统设计与实现. 管理系统的应用. 总结. 致谢. 目录. 相关技术. 访问控制策略 - PowerPoint PPT Presentation

Citation preview

基于 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

致谢最后,感谢我的指导老师熊丽荣老师,感谢你一

直以来对我们的信任与支持,在毕业设计阶段一直关心我们的进度,能够安排一周一次的会面与讨论,为我们提供参考意见。

Recommended