日期:2014-05-19 浏览次数:20631 次
经过今天一天的研究,大概对于J2EE规范有了个思路,主要的技术要素大概是这么个关系,不知道对不对,我想应该问一下专家。
主要参考的书是罗时飞的《敏捷Acegi、CAS——构建安全的Java系统》,由于本文多次引用该书,因此以下简称[罗07]
我阅读了JSR-115(Java Authorization Contract for Containers),以下是对于该规范的简介(我不知道是不是这个规范就是J2EE安全方面的所有规范):
The contract defined by this specification is divided into three subcontracts. Taken together, these subcontracts describe the installation and configuration of authorization providers such that they will be used by containers in performing their access decisions. The three subcontracts are the Provider Configuration Subcontract, the Policy Configuration Subcontract, and the Policy Decision and Enforcement Subcontract.
我的理解是,其主要是定义了一些安全概念,JAAS Interface和JAAS Provider,还有如何为Servlet,EJB等提供安全服务。
<o:p>?</o:p>
?????? 这篇叫做J2EE中的安全第一部分介绍了J2EE中的概念,体系结构(声明式,编程式)和认证模型(基于HTTP请求,基于表单,基于摘要(Digest),基于.X509证书)。
<o:p>?</o:p>
我主要研究了WebSphere、WebLogic和Acegi和J2EE规范的关系,觉得似乎这三者首先都包含了对于规范的实现,比如如何进行基于HTTP请求的认证。而且三者都超越了规范。
而WebLogic安全框架和Acegi都存在对于J2EE容器提供的API的一定程度的封装和抽象。
<o:p>?</o:p>
关于JAAS,这个是J2SE规范中定义的Java认证和授权服务,在J2EE中由容器对于其进行了封装;它和Acegi的关系可以看作是替代关系,使用JAAS定义的LoginModule实现类来完成认证,当然为了保持一致性可以通过Acegi的JaasAuthenticationProvider将用户认证请求转给JAAS;使用Acegi,就用SecurityContextLoginModule。这是参照[罗 07]的说法。对于Acegi和JAAS的认识还都比较初级,所以概念上也不知道对不对。