基于ODAC的权限管理机制

2017-01-21 21:48汤俊兰潘永才汪磊
物联网技术 2016年12期

汤俊兰++潘永才++汪磊

摘 要:权限管理作为信息管理系统中必不可少的一部分,已经受到越来越多的人重视。文中主要对权限管理的基本概念以及实现方法做了概要介绍,并结合作者在毕节煤炭税源专业化管理平台系统开发过程中的实际应用做了详细说明。

关键词:ODAC;用户管理;角色管理;站点地图;权限管理

中图分类号:TP391 文献标识码:A 文章编号:2095-1302(2016)12-00-02

0 引 言

随着信息化的不断发展,基于Web的信息管理系统越来越普及。B/S体系结构因其可扩展性好、维护简便、成本较低、适用范围广,被大量应用于各种信息管理系统,是当今主流的发展方向。为了保证数据的安全性,应防止非法用户进入系统获取数据或修改数据,控制合法用户的访问权限。权限管理作为信息管理系统的重要组成部分,有效实现了对系统用户的权限控制。权限管理一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。

目前,实现权限管理的安全策略主要有自主访问控制(DAC)、强制访问控制(MAC)以及基于角色的访问控制(RBAC)三种方式。由于DAC的控制策略安全级别低,主体的权限过大,容易导致安全问题,而MAC的规则严苛,应用领域窄,因此目前应用最为广泛的是RBAC。该策略在用户与权限之间引入了角色的概念,将不同的岗位和工作职责创建成相应的角色,并为每个角色授予所需的操作权限,然后根据用户的不同职能授予其不同的角色。用户可根据角色获取不同的权限,对相应的系统资源进行操作。该设计模式在很大程度上降低了权限管理的复杂度,减少了管理成本。例如当一个应用系统有m个用户,且每个用户都要获得相同的n个操作权限,那么管理员为这些用户授权的方式有以下两种:

(1)直接给每个用户授予权限,需要m×n次操作;

(2)创建一个可以同时拥有n个权限的角色,将这n个权限授予该角色,然后将该角色分别授予m个用户,共计需要m+n次操作。

显而易见,第二种方法更为高效,当m和n的值越大,这两种方法的操作成本差距越大。由于RBAC更节约用户权限管理的成本,本文主要在基于角色的安全访问控制的基础上探讨如何使用ODAC实现权限管理。

1 ODAC技术概述

ODAC(Oracle Data Access Components,ODAC)是一种用来存取Oracle关系数据库系统的非可视化组件。ODAC使用Oracle Call Interface (OCI)可使编译生成的应用程序非常小。此外,ODAC的Net选项支持无需在客户机上安装Oracle客户端即可连接到Oracle。因此只需要TCP/IP协议的支持即可运行使用 ODAC Net应用程序。ODAC的对象模型如图1所示。

2 使用ODAC实现权限管理

2.1 用户权限管理

实现应用系统的权限管理必须先实现用户管理和角色管理。用户管理即对需要进入系统用户的基本信息进行增、删、改、查操作。用户登录、连接数据库查找是否存在用户信息,若存在,则对用户信息进行验证,判断其用户名、密码是否正确,从而判定该用户是否可以成功登录。用户与角色之间紧密联系,一个用户可以拥有多个角色,一个角色也可以赋给多个用户,他们之间是多对多的关系,如图2所示。

用户登录系统后,通过获取到的用户名查找该用户所对应的角色。角色可以看成是具有特定权限的用户集合,一个角色可以被赋予多个权限,一个权限也可以分属不同的角色,他们之间也是多对多的关系,如图3所示。

用户权限管理主要解决两个任务,即身份验证和使用权限。身份验证即确定访问网站的用户身份,解决“用户是谁”的问题,相当于用户管理。使用权限即在用户身份确定之后,授予他一定的权限,允许他使用特定的服务解决“用户能干什么”的问题,相当于角色管理。

2.2 使用ODAC与XML文件实现权限管理

由于ODAC相当于一个访问Oracle数据库的客户端,开发过程中可选用ODAC连接数据库。权限管理主要依靠TreeView与TreeList,并结合对应的XML文件实现。用户登录系统后,获取该用户所对应的角色并存放于数组。然后逐个扫描各节点的访问权限,并与数组中存放的角色信息逐一比对,若符合要求即可访问,否则系统提示“无访问权限”。部分代码实现如下:

public void VistTree(TreeNodeCollection ns)

{

if (ns.Count == 0)

return;

if (Page.User.Identity.IsAuthenticated)

{

string[] rs = HS.UserFoundation.GetRoleName(HS.UserFoundation.getUserName

(Page.User.Identity.Name.ToString()));

foreach (TreeNode nd in ns)

{

string info = null;

if ((nd.Text.Length > 0) && (nd.NavigateUrl.Length > 0))

{

if (rs.Length > 0)

{

string role = nd.Value.ToString();

if (role != null && role.Length > 2)

{

bool isPermission = false;

for (int i = 0; i < rs.Length; i++)

{

if (role == "所有人")

{

isPermission = true;

break;

}

else

{

if (role.Contains("ALL" + rs[i] + "ALL"))

{

isPermission = true;

break;

}

else

{

info = info + "【" + role.Replace("ALL"," ") + "】 "; }

}

}

if (!isPermission)

{

nd.NavigateUrl = "#";

nd.ImageUrl = "~/images/false116.gif";

nd.ToolTip ="无权限访问该页面。";

nd.Target = "_self";

}

}

}

}

}

}

return;

}

2.3 ODAC结合站点地图实现权限管理

站点地图又称为网站地图,是指当页面较多时,可以方便的知道当前所在位置,类似于普通地图,标示出当前位置。站点地图能够以页面形式展示给用户,页面中列出网站的整体结构,放置了网站上所有页面的链接,方便用户找到自己想要获取的信息。

使用ODAC结合站点地图实现权限管理的具体方法如下:

(1)首先执行Membership脚本。在安装ODAC之后会生成InstallAllOracleASPNETProviders.sql,执行该脚本即可。

(2)添加4.0版本的oracle.web.dll引用,并修改web.config,配置连接字符串、配置Membership、配置RoleManager、配置SiteMap、配置Profile等相关参数即可。

(3)灵活应用Memu控件和配置文件实现对应于不同用户的不同导航菜单。其中,siteMap的具体配置如下所示:

type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true"

siteMapFile="~/Web.sitemap"/>

3 结 语

本文采用ODAC作为连接Oracle数据库的客户端,通过结合XML文件以及结合站点地图的方式实现权限管理。目前,更多的人采用结合站点地图的方式实现该功能。权限管理的正确实现以及高效工作为应用系统尤其是信息管理应用系统提供了安全保障。

参考文献

[1]郑歆.权限管理在成绩管理系统中的设计与实现[J].宁德师范学院学报(自然科学版),2015,27(4):444-448.

[2]唐小新.用ODAC技术实现MELINETSII数据导出的开发[J].现代图书情报技术,2008(11):86-89.

[3]彭耘,张立平.通用权限管理系统设计与实现[J].教育教学论坛,2014(25):154-155.

[4]华英.通用权限管理系统的研究与实现[J].科技风,2015(22):82.

[5]刘丽钦.通用、动态权限管理模型的设计与实现[J].软件,2016,37(3):94-98.

[6]吉东,崔忠伟,马虹.基于Web的高校团委信息管理系统设计与实现[J].物联网技术,2016,6(10):112-113.

[7]娄帅.基于达梦数据库增强型权限管理机制的研究[D].武汉:华中科技大学,2011.

[8]邱伟.基于MVC+ORACLE+ODAC的公司业务数据管理系统[D]. 青岛:青岛理工大学,2015.