2007 年 5 月 24 日
基于富客户端的业务应用程序需要严密的安全规则,以使不同类型的用户能够获得预先确定的访问权限。本文解释了如何通过利用 Eclipse 平台提供的特性,构建用于富客户端平台(RCP)应用程序的灵活的安全模型。
控制对工作台内容和 SWT 控件的访问对于 RCP 应用程序来说是很重要的。开发人员必须根据用户角色隐藏工作台内容和用户控件。然而,对于开发人员通常需要的安全特性而言,Eclipse 所提供的支持相对较少。此安全性框架示例将控制呈现给用户的功能。
|
Eclipse 提供 org.eclipse.ui.activities 扩展点,作为控制组相关的 UI 功能的机制。活动 是标识符的逻辑集合。标识符 代表功能,还能够代表其他内容,例如视图或编辑器首选页。当活动的功能被提供给用户时,此活动就处于启用状态。反之,当标识符被禁用时,此活动就处于隐藏状态。活动能够要求一个或多个其他活动,这意味着启用一个活动会启用此活动依赖的所有活动。活动也可被分组到一个或多个类别,来呈现给用户。
Eclipse 能够过滤五种功能:
本文通过将访问权集成到两个可管理单元(工作台级访问和控件级访问)的方式,解决了应用程序级的安全性问题。
工作台级访问 包括对工作台内容(例如编辑器、视图和透视图)的访问。控件级访问 包括对 SWT 控件(例如标签、按钮、组合框等)的访问。
在一个典型的组织中,一些用户具有多重角色,这就要求一个好的安全性架构能够识别具有多重身份 的用户(指组织中同时具有多种角色的用户)。应用程序需要一个健壮的安全模型来处理类似场景。通过使用以下安全模型,您将拥有合适的工具来创建具有安全性的安全的应用程序,而且使用此应用程序的用户不会感觉麻烦。
这个报销应用程序是一个样本应用程序,用于说明如何将客户端活动映射到服务器端角色。在深入到实现细节之前,让我们先来看看应用程序架构及其功能。此报销应用程序是用于跟踪员工开支的企业应用程序。此应用程序的用户包括员工、经理和管理员。
经理和管理员具有两个角色。他们是生成开支报告的员工,他们也能够检查其他员工创建的开支报告。
以下用例图说明了每种类型的用户能够根据角色执行的功能:

登录屏幕是应用程序的起始屏幕。此屏幕提示用户输入用户名和密码。通过身份验证的用户会建立用户角色,并基于其角色(员工/经理/管理员)使用活动,例如查看或创建开支报告。
员工可使用三种活动:

经理拥有批准权以及正常的员工权利。

管理员拥有和员工相同的访问权,另外还有管理员访问特权(类似于 UNIX? 超级用户)。


An example of adding activities to the "org.eclipse.ui.activities" extension point:
<activity
id="com.examples.reimbursement.viewActivity"
name="ViewActivity">
<activityPatternBinding
activityId="com.examples.reimbursement.viewActivity"
pattern=".*/emp\..*">
|
<role
id="com.examples.reimbursement.demo.employee"
label="com.examples.reimbursement.demo.employee"
roleId="empRole">
<enabledActivity id="com.examples.reimbursement.viewActivity">
<enabledActivity id="com.examples.reimbursement.createActivity">
<role>
|
RegistryReader的帮助下读取角色扩展点。
readRegistry(Platform.getExtensionRegistry(),PLUGIN_ID, PL_ROLES_EXTENSION)
|
在本文中,您开发了一个足够灵活的安全模型来使您的应用程序增值。您还能够将此安全模型作为插件插入到任何现有应用程序中。小部件级安全性虽然在大多数应用程序中是一个有用的特性,但是通常不被使用,这是因为其实现过程中涉及的工作量及其导致的应用程序性能风险过大。