日期
| <chsdate isrocdate="False" islunardate="False" day="1" month="8" year="2005" w:st="on"></chsdate>2005年8月1日
|
作者
| <rtx w:st="on"></rtx>gauss
|
类型
| 安全认证
|
内容
| 电子平台的安全模式设计
|
电子平台的安全模式设计
1. 前言
由于电子平台的办公信息的敏感性以及网络的虚拟性和开放性,决定了电子平台系统需要有强有力的用户访问安全、网络安全、系统安全、应用程序安全、数据库和事务管理器安全来保证电子平台系统的安全。而系统采用J2EE框架正是满足以上需要,它不但将安全任务的一些内容转移给容器,且能够提供应用程序员完成安全任务的功能。
2. 方案的整体设计
在电子平台系统的安全体系中我们主要应用到了集中认证、系统密码加密、Web模块的角色配置和EJB模块的角色配置。下面就是系统的整个安全体系的设计示意图:
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"></shapetype><stroke joinstyle="miter"></stroke> <formulas> </formulas> <f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f> <lock aspectratio="t" v:ext="edit"></lock><shape id="_x0000_i1025" style="WIDTH: 359.25pt; HEIGHT: 414pt" type="#_x0000_t75"></shape><imagedata o:title="绘图3" src="file:///C:\DOCUME~1\gauss\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg"></imagedata><lock aspectratio="f" v:ext="edit"></lock>
电子平台安全体系示意图
2.1 集中认证:
集中认证就是采用CA机构的认证服务器和Web应用程序,对客户端数字证书的验证过程与普通的认证相同都是采用的Https传输信息。在验证完成以后CA机构的Web应用程序会根据配置文件转发到指定位置,这里我们可以设定电子平台系统的首页面,同时将认证的一些信息放到客户端的Cookie中,这样我们只需要在自己的电子平台系统的用户进行业务登入的时候调用CA机构提供的认证接口进行验证,这个过程是采用Http方式,速度上将会有很大的提高,同时保证的安全性,且对电子平台系统的影响较小,有利于系统的开发、集成和更新。为了更好的说明集中认证与普通认证的区别,我做了以下比较:如图
<shape id="_x0000_i1026" style="WIDTH: 363pt; HEIGHT: 161.25pt" type="#_x0000_t75"></shape><imagedata o:title="" src="file:///C:\DOCUME~1\gauss\LOCALS~1\Temp\msohtml1\01\clip_image003.png"></imagedata>
集中认证VS普通认证
下面我们集中讨论集中认证在电子平台系统的应用,下面是电子平台系统应用集 中认证的一个网络流程示意图和集中认证的程序流程图:
<shape id="_x0000_i1027" style="WIDTH: 363pt; HEIGHT: 322.5pt" type="#_x0000_t75"></shape><imagedata o:title="liu2" src="file:///C:\DOCUME~1\gauss\LOCALS~1\Temp\msohtml1\01\clip_image005.jpg"></imagedata>
电子平台应用集中认证的流程图
系统应用集中认证登陆注册的程序流程:
<shape id="_x0000_i1028" style="WIDTH: 193.5pt; HEIGHT: 446.25pt" type="#_x0000_t75"></shape><imagedata o:title="liu" src="file:///C:\DOCUME~1\gauss\LOCALS~1\Temp\msohtml1\01\clip_image007.jpg"></imagedata>
上面提到的一些关于集中认证的一些概念可以参考《关于CA的一些基本概念》和《公钥基础设施PKI技术》。具体服务证书和CA认证机构auth.war包怎么部署以及如何应用参考《集中认证在电子平台中应用》文档。关于调用CA机构提供的验证接口在LoginAction/RegAcion内进行。具体如何实施在下面的“系统开发过程中注意的事项”中会具体讨论。
2.2 J2EE安全体系:
电子平台采用采用先进的、流行的MVC三(多)层技术体系架构,分别为:View、Controller、Model,如下图所示:
<shape id="_x0000_i1029" style="WIDTH: 384pt; HEIGHT: 247.5pt" type="#_x0000_t75"></shape><imagedata o:title="绘图4" src="file:///C:\DOCUME~1\gauss\LOCALS~1\Temp\msohtml1\01\clip_image009.jpg"></imagedata><lock aspectratio="f" v:ext="edit"></lock>
这样将业务逻辑层与视图分开不但有利于开发而且保证了数据的安全性,下面主要谈一下J2EE应用程序的安全性。
J2EE应用程序安全使用基于角色的安全机制,在开发期间,我们应当通过为特定的安全角色分配安全资源和方法来确定应用程序的安全策略。在应用程序装配期间,安全角色被影射为真实的用户和组。这种两段式安全管理方法给予应用程序很大的灵活性和可移植性,在运行时,J2EE容器负责强迫执行访问控制安全的资源和方法。J2EE容器支持两类安全:
·说明性的安全性:
·可编程的安全性:
说明性的安全性,根据名称可以看出说明性安全主要是将安全策略在部署的描述文件中定义,可编程的安全性要求程序员通过编码来保证J2EE的安全性。而不需编码实现,它主要借助J2EE的容器根据定义对安全策略。可编程的安全性,我们在本系统中采用说明性的安全性。两者之间都有各自的优缺点:
名称
| 优点
| 缺点
|
说明性的安全性
| 不需要编码,减轻了程序员的编码工作量;更改角色方便。
| 灵活性差;部署的时候比较麻烦
|
可编程的安全性
| 灵活性好,能够根据业务的需要定制安全;部署方便
| 需要编码实现,增加了程序员的工作量;更改角色不方便,需要修改代码
|
在电子平台项目中我们是尽量采用说明性的安全性,若在说明性的安全性无法满足业务 需求的情况下采用可编程的安全性。下面我们分为Web模块和EJB模块来讨论:
2.21:Web模块:
在Web模块里面用的角色现拟如下:
大众用户 everyone
企业用户 enterprise
质检用户 organ
市监督局 city_ surveillance
省监督局 province_ surveillance
国家监督局 country_ surveillance
平台管理员 plat _manager
具体到开发部署的时候可以根据需要变通的进行更改和增删。
(A)定义验证方法:
验证机制定义客户如何被Web应用程序验证。在应用任何验证约束之前,用户需要使用一个已经设置的机制来通过验证过程。Servlet规范定义了4种验证用户的机制。基础验证、摘要验证、客户证书验证、基于表单的验证。电子平台系统主要采用了客户端证书验证和基于表单的验证。其中关于证书的验证采用的集中认证的模式。
(B)定义安全角色:
在Web部署描述文件web.xml中,所用在Web模块中使用的安全角色和一个可选的描述文字都必须被命名。一个角色时一个占位符,在应用程序的部署期间占位符最后被映射为真实的用户和用户组。
(C)定义安全约束:
在Web模块中可以定义多个安全约束。安全约束声明了应用程序的内容是如何被保护的。对于一个给定的安全约束,我们定义2个特征:
·Web资源集合:一个Web资源集合是一组URL模式和该模式代表的资源中的HTTP方法。一个安全约束可以有多个Web资源集合。
·授权约束:一个授权约束定义了在安全约束下授权哪些角色存取Web资源集合。
(D)为单个的servlet/jsp定义安全角色引用(可选):
这部分内容可以根据需要,将一些比较特殊而且安全级别比较高的页面定义安全角色引用。
(E)口令加密: