角色的权限控制设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以将编程逻辑进行编译, 提供了强类型、性能优化和早期绑定。 ASP.NET 应用程序有两种基本的权限策略: 基于角色的授权和基
于资源的授权。 对操作的访问通过调用者的角色成员关系, 提供安全保护。角色
可 以 将 应 用 程 序 的 用 户 群 划 分 为 具 有 相 同 安 全 权 限 的 用 户 组 。用 户 被 映射到角色, 而且如果某个用户被授权执行所请求的操作, 则应用程 序可以用固定的标识来访问资源。这些标识被各自的资源管理器( 如 数据库和文件系统) 所信任。
1.AS P .NET 技术 ASP.NET 是微软推出的用于建立动态的数据库驱动网站的技术, 是一个已编译的、基于.NET 的环境 [3], 为开发人员提供生成 企 业 级 WEB 应用程序所需的服务, 可以 和 任 何 与.NET 兼 容 的 语 言 创 建 应 用 程序, 生成更安全的、可伸 缩 的 和 稳 定 的 WEB 应 用 程 序 , ASP.NET 提 供 了 一 种 将 显 示 逻 辑 和 编 程 逻 辑 分 离 的 Web 应 用 程 序 设 计 技 术 , 可
单独的资源使用 Windows ACL 来提 供 安 全 保 护 。 应 用 程 序 在 访 问资源之前模拟( impersonate) 调用者, 这样可以 使 操 作 系 统 执 行 标 准 的访问检查。所有对资源的访问都是使用原始调用者的安全上下文。 这种模拟方式在应用程序的中间层连接池不能被有效使用, 因而影响 了应用程序的可伸缩性。
然而, 在 ASP.NET 中实现方案并不详尽, 而且不 能 满 足 对 不 同 的 用户分派不同的任务需求。
2.角色访问控制 传 统 的 访 问 控 制 方 法 DAC( Discretionary Access Control, 自 主 访 问 控 制 模 型 ) 、MAC( Mandatory Access Control, 强 制 访 问 控 制 模 型 ) 难 以 满 足 复 杂 的 企 业 环 境 需 求 。 因 此 , NIST ( National Institute of Standards and Technology, 美 国 国 家 标 准 化 和 技 术 委 员 会 ) 于 90 年 代
NET 平 台 上 没 有 完 整 的 基 于 角 色 的 访 问 控 制 机 制 , .NET 中 的 安 全 模 型 ( 代 码 访 问 安 全 性 : CAS) 只 是 实 现 到 角 色 层 次 , 没 有 细 化 到 任 务层次, ASP.NET 2.0 中的诸多安全机制 , 如 Membership、Web.Config 的安全配置, 都只能针对角色进行设置, 大家在利用这些安全机制, 往 往 需 要 在 程 序/代 码 硬 编 码 ( HardCode) 角 色 , 这 样 就 无 法 实 现 在 运 行 期自定义角色的功能。本文将首先介绍 ASP.NET 的基 本 情 况 和 基 于 角色和访问控制( Role Based Access Control, RBAC) 的 [1][2] 基 本 思 想 , 在 此基础上, 给出科研管理系统中实现用户权限控制的一种具体方法。
在 ASP.NET 中提供了成员资格、角色管理授权等功能。通过成员 资格提供了通用的用 户 管 理 功 能 , 诸 如 注 册 、登 录 、找 回 密 码 等 , 加 上 与之配套的可视化控件, 我们“几乎”不用在编写额外的代码就可以工 作。但注册和登录控件有缺乏验证码, 缺乏安全性。ASP.NET 2.0 的角 色管 理 授 权 , 由 RoleManagerModule、Roles、RoleProvider、RolePrincipa 共 同 组 成 。 系 统 会 自 动 载 入 RoleManagerModule 这 个 HttpModule, Roles 为用户提供角色相关的操作方法, 而 RoleProvider 提 供 程 序 的 抽象类。
3.权限分配的设计与实现 权限控制的基本思想是: 根据角色访问控制( RBAC) 的基本原理, 给用户分配一个角色, 每个角色对应一些权限, 然 后 利 用 ASP.NET 中
的服务器端编程技术来判断该用户对应的角色及该角色所拥有的页 面访问权力, 然后根据这些权力动态调用相应 Web 页面。
下面以学校科研管理系统为例进行在 ASP.NET 中 基 于 角 色 的 用 户权限分配的设计与实现。
科技信息
○IT 技术论坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 25 期
在 ASP.NET 中基于角色的权限控制设计与实现
昝风彪 ( 青海民族学院计算机科学与技术系 青海 西宁 810007)
【摘 要】ASP.NET 虽然提供基于角色的授权和基于资源的授权两种权限策略, 但不能满足对不同的用户分派不同的任务需求。基于角色 的访问控制实现了用户与访问权限的逻辑分离, 更符合企业的用户、组织、数据和应用特征。在 ASP.NET 中运用基于角色的访问控制使应用程 序在用户管理方面具有更好的灵活性和安全性, 实现多粒度控制。
3.1 数据库中表的设计 ( 1) 用户权限表( user_auth) :
表 1 用户权限表
字段名称
字段描述
主键
类型
长度
说明
User_ZGH 用户职工号
PK
Char

User_Name 用户名称
Char
20
Password
口令
Char
255
Status
用户状态
Char

Role_Code 用户角色代码
【关键词】APS.NET ; 角色; 权限; 访问控制 Design and Implementation of Role- Based Pr ivilege Contr ols in ASP.NET ZAN Feng- biao
( Dept. of CS&T, Qinghai Univer sity for Nationalities, xi’ning Qinghai 810007, China) 【Abstr act】Although it provides authorization of both role- based and resource- based in ASP.NET, it also did not to satisfy deferent user has deferent requirements. Because it logically decouple the user and it’s access privilege in role based access control, it more accord with user, organization, data and application characteristics in enterprise. Being use of role based access control, it obtains flexibility and security in the ASP. NET application and develops granularity access control in the application as well. 【Key Wor ds】ASP.ENT; Role; Privilege; Access Control
初提出了基于角色的访问控制方法, 实现了用户与访问权限的逻辑分
离, 更符合企业的用户、组织、数据和应用特征。 角 色 访 问 控 制 ( Role- Based Access Control, RBAC) 引 入 了 角 色 的
概念,目的是为了隔离用户( 即动作主体) 与权限( 表示对资源的一个 操作) 。角色作为一个用户与权限的代理层, 解耦了权限和用户的关 系, 所有的授权应该给予角色而不是直接给用户或组。权限颗粒由操 作和资源组成, 表示对资源的一个操作。基于角色的访问控制方法 ( RBAC) 的显著的两大特征是: 1) 由于角色/权限之间的变化比角色/用 户关系之间的变化相对要慢得多, 减小了授权管理的复杂性, 降低管 理开销。2) 灵活地支持企业的安全策略, 并对企业的变化有很大的伸 缩性。
84
科技信息பைடு நூலகம்
○IT 技术论坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 25 期
一个由 0 和 1 组成的类似二进制数的字符串。而任务表中的 Task_ID (任务序号)字段表示该任务在角色表的 Role_task (角色任务分派值)字 段中的位置, 如果该位置对应的数值是 0, 表示该角色无此权限, 如果 值为 1, 则表示该角色拥有此权限。
图 1 对角色进行任务分派功能实现图
主要代码如下: // 对 角 色 分 派 的 任 务 转 换 成 字 符 串 for ( i = 1; i < 79; i++) { strCheckBox = "CheckBox"; strCheckBox += i.ToString(); cb = (CheckBox)FindControl(strCheckBox); strRole += cb.Checked ? "1" : "0"; }
就基于角色访问控制而言, 访问决策是基于角色的, 个体用户是 某个组织的一部分。 用 户 具 有 指 派 的 角 色 ( 比 如 医 生 、护 士 、出 纳 、经 理) 。定义角色的过程应该基于对组织运转的彻底分析, 应该包括来自 一个组织中更广范围用户的输入。访问权按角色名分组, 资源的使用 受限于授权给假定关联角色的个体。例如, 在一个医院系统中, 医生角 色可能包括进行诊断、开据处方、指示实验室化验等; 而研究员的角色 则 被 限 制 在 收 集 用 于 研 究 的 匿 名 临 床 信 息 工 作 上 。控 制 访 问 角 色 的 运 用可能是一种开发和加强企业特殊安全策略, 进行安全管理过程流程 化的有效手段。
3.3 页面动态调用的实现 每一个用户登录到系统后, 系统根据 用户的角色集查看所拥有的角色, 并根据相应角色的任务集进行对用 户的任务分配, 分配完任务后, 对相应的功能进行允许访问或禁止访 问 来 决 定 对 功 能 模 块 的 调 用 与 否 。如 果 是 允 许 调 用 则 用 户 可 以 访 问 此
字段名称
字段描述
主键
Task_ID
任务序号
PK
Task_Name
任务名称
SubFunctionNo 所属功能模块子类
FunctionNo
所属功能模块类
URL
页面 URL 地址
类型 Char Char Char Char char
长度 说明 2 30
100 255 255
3.2 任 务 分 派 功 能 实 现 如 下 图 1 显 示 了 在 ASP.NET 页 中 任 务 分 派 功 能 的 实 现 。通 过 对 各 任 务 功 能 的 选 择 进 行 分 派 任 务 。系 统 根 据 选择的结果转换成字符串存放于角色表的 Role_Task 字段中。
表 2 角色表
字段名称
字段描述
主键
类型
长度 说明
Role_Code
角色代码
PK
Char

Role_Name
角色名称
Char
30
Role_Task
角色分派任务
Char
100
Role_Discription
描述
Char
255
Remark
备注
char
255
( 3) 任务表( Task_Table) : 表 3 任务表
Char
100
Remark
备注
char
255
在 用 户 权 限 表 的 Role_Code 字 段 用 于 记 录 对 该 用 户 所 分 配 的 角 色集, 一个用户有可能身兼多个角色。
( 2) 角色表( Role_Table) : 角色表中 Role_Task 字段用于记录该角色所拥有的任务集。它是
页面, 而用户对页面没有访问权限时, 系统对此页面进行过滤。最终, 用户在客户端只能看到并且只能操作与自己权限相对应的功能和页 面。其主要代码如下:
// 判 断 用 户 是 否 有 对 此 功 能 菜 单 的 访 问 权 for (i = 0; i < ds.Tables[0].Rows.Count; i++) {
相关文档
最新文档