上一级 首页 

小结

本章主要是讨论如何利用J2EE容器的安全框架来实现应用系统的安全管理功能,这些操作实现原理可以应用于任何需要安全机制的系统。

相比前面章节讨论的“简单的用户注册系统”,本章部分操作显得过于复杂,但是这些技术的选用都是依据不同应用要求作出的。

使用J2EE容器的安全框架比较适合一些中大型项目,在这些项目中,数据量以及访问量都比较大,运行的J2EE服务器可能达到几十台甚至几百台,而且运行内容都千差万别。如何在这样一个复杂的分布式系统中实现一个统一的用户安全管理机制?使用J2EEJAAS以及LDAP支持的单点登录才能满足这样的大型应用。

在这样统一的安全框架中,以角色为分界线,用户、访问权限以及被访问的资源都可以最大限度的实现灵活配置和变动,彼此都不影响对方,各自都有无限的扩展能力,实现了一种统一资源的动态权限访问。

J2EE容器安全配置步骤小结如下:

(1)     立用户数据库,保存用户的口令和角色名称。

(2)     web.xmlejb.xml中配置角色的访问权限,确定登录验证方式,是表单式还是基本的HTTP式。

(3)     配置容器的安全域,这和具体J2EE服务器有关,JBoss服务器是在Web层的jboss-web.xmlEJB层的jboss.xml中加入:

<security-domain>java:/jaas/SecurityRealm</security-domain>

其中,JdonSecurity需要在J2EE服务器中配置。

(4)     配置J2EE服务器,在JBosslogin-config.xml文件中加入JdonSecurity的安全策略。在JdonSecurity具体配置中,可以选择使用LoginModule,如使用LDAPLoginModule。如果用户的口令和角色数据保存在数据库中,选择DatabaseServerLoginModule,配置相应的查询语句,别忘记配置J2EE服务器的数据库源DataSource

这是J2EE简单的容器安全配置,对付一般应用足够。在有些应用中,需要在用户登录Login后做一些全局布置之类的事情,那么此时就要实现Login.jsp。在Login.jsp中调用J2EE的安全服务,或者直接调用直接定制的LoginModule。这样可以实现定制性很强的统一的用户安全管理机制。

EJB的消息BeanMDB)是除Session Bean以外的又一重要技术,EJB的消息BeanMDB)允许开发者利用已有的在EJB技术方面的投资,将这些投资整合到一个异步消息传递的上下文环境中,使用JMS客户机发送一条消息给一个MDB

在实际应用的架构设计中,异步处理机制和EJBSession Bean等这些同步机制一样重要,不少程序员为了提高系统处理性能,一味地使用同步机制,并且试图一直加快这种同步处理速度,其实一个复杂系统的性能提高和单个功能的处理速度提高并无太多直接关系,一个复杂系统的性能提升往往和这个复杂系统的运行效率有关。

这种情况非常类似现实生活中的交通行驶。虽然道路上行驶的单个车辆本身能够开得很快,但是一旦发生交通堵塞,最终行驶速度很低。尤其是这种单件个体数量增多时。因此,复杂系统的运行效率是系统架构性能设计首要考虑的因素,需要检查系统中哪些环节会发生堵塞(Block),从而会导致整个系统的性能急剧下降。

运用异步处理机制是处理这种堵塞现象的一种有效办法,将那些容易发生堵塞现象的环节使用异步机制处理,从而提高整个系统的运行效率。

例如,本章中介绍的发送邮件功能是属于容易发生堵塞的一种现象。邮件接受服务器繁忙时,可能无法接受发送给它的邮件,因此必须多次向这个服务器发送,这种过程可能延续几秒甚至几个小时,如果让系统的其他功能等待发送功能完成后再执行,就犹如宝马车开在拖拉机后面一样。

异步处理机制还有另外一个主要优点:能够确保数据的可靠性,不丢失。在股票交易等重要系统应用中,如果股票服务器类似邮件服务器那样,因为服务器繁忙而拒绝接受用户买卖股票的指令,其后果是不堪设想和可笑的。因此,股票服务器的第一步是必须确保能够接受用户指令,并且保证这种接受数据不丢失,通过JMS的集群方案可以很好地解决这个问题。

 

 

 

 


上一级 首页