ONJava.com -- Web 服务实现中的概念分离 --> page 3
2007-01-30 13:10
836 查看
第 1, 2, 3, 4 页
我们需要使用
接下来,需要使用
最后一个需要配置的属性是
Acegi 安全配置
现在我们来讨论如何在 Spring 配置文件中配置 Acegi 安全性。 如上文所述,我们已经配置了业务逻辑 Bean,使其方法调用被securityInterceptorBean 拦截以执行安全性检查。 让我们来看看这个 Bean 是如何配置的。 下面展示了
securityInterceptorBean 的 Spring 配置文件片段。
securityInterceptorBean 是由一个称为
securityInterceptor的 Acegi 类提供的。 正如其名字的含意一样,该类用于加强方法调用的安全性(方法是拦截方法调用,检查调用者是否被授权)。
<beans> . . . <bean id="securityInterceptor" class="org.acegisecurity.intercept.method. aopalliance.MethodSecurityInterceptor"> <property name="authenticationManager"> <bean class="org.acegisecurity. providers.ProviderManager"> <property name="providers"> <list> <bean class="org.acegisecurity. providers.anonymous. AnonymousAuthenticationProvider"> <property name="key" value="changeThis"/> </bean> </list> </property> </bean> </property> <property name="accessDecisionManager"> <bean class="org.acegisecurity.vote. UnanimousBased"> <property name="decisionVoters"> <list> <bean class="org.acegisecurity. vote.RoleVoter"/> </list> </property> </bean> </property> <property name="objectDefinitionSource"> <value> com.mybank.bizlogic.AccountMgr. transferFunds=ROLE_MANAGER </value> </property> </bean> . . . </beans>
我们需要使用
authenticationManager属性来配置
securityInterceptorBean 以指示使用哪种授权方式。 由于设计上依靠 Axis 事务处理程序执行授权,我们在此处不需要进行授权,只需使用
AnonymousAuthenticationProvider进行配置。 另外,在 Axis 事务处理程序中创建授权标识的方式,将会使 Acegi 知道已经进行了授权,因此不会再次授权。 我们将在讨论 Axis 事务处理程序的时候详加讨论。
接下来,需要使用
accessDecisionManager属性配置该 Bean 以指定它如何决定某人是否有对方法调用进行访问的权限。 Acegi 有三个具体的访问决定管理器实现:
AffirmativeBased、
ConsensusBased和
UnanimousBased。 Acegi 作出访问决定的方式是:依靠投票者投票,决定是否授予某人访问权限来执行具体操作。 它通过计算票数来决定是否授予访问权限。 我们选择了
UnanimousBased访问决定管理器,该管理器要求所有投票者通过投票来授予客户端执行特定操作的权限。 阅读 Acegi 文档可以深入了解其工作原理。 接下来,我们要使用一个投票者名单来配置
accessDecisionManager。 本示例中,只有一个投票者,称为
RoleVoter。 它是 Acegi 的一个类,根据基于角色的访问控制,该类对授予权限与否进行投票。 同样,阅读 Acegi 文档可以深入了解
RoleVoter如何工作。
最后一个需要配置的属性是
objectDefinitionSource。 这是授予权限的方式,即,对于各种受到安全保护的对象,对象上的方法调用需要授予何种访问权限。 此处,只需要保证
transferFunds()方法的安全,并且只将权限授予 Manager 角色。 为达到此目的,我们需要列出类的全限定名称和方法的名称以及访问该方法的角色:
com.mybank.bizlogic.AccountMgr.transferFunds= ROLE_MANAGER
第 1, 2, 3, 4 页 | 下一页 |
相关文章推荐
- ONJava.com -- Web 服务实现中的概念分离 --> page 1
- ONJava.com -- Web 服务实现中的概念分离 --> page 2
- ONJava.com -- JBoss Seam --> page 5
- ONJava.com -- Jboss-seam --> page 2
- ONJava.com -- JBoss Seam --> page 1
- ONJava.com -- JBoss Seam --> page 3
- ONJava.com -- JBoss Seam --> page 4
- java web开发在web.xml配置<mime-mapping>实现浏览器根据文件类型自动打开
- java Web服务实现方案(REST+SOAP+XML-RPC)简述及比较
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- CentOS 6.5环境下使用HAProxy+apache实现web服务的动静分离
- JAVA与.NET的相互调用——通过Web服务实现相互调用
- servlet+jsp+java实现Web 应用 概念,实现
- weblogic部署异常: cvc-enumeration-valid: string value '3.0' is not a valid enumeration value for web-app-versionType in namespace http://java.sun.com/xml/ns/javaee:<null>
- Become.com的 Web Crawler: 一个超大规模的Java应用程序(想开发自己的搜索引擎增值服务的必读)
- Description Resource Path Location Type web.xml is missing and <failOnMissingWebXml> is set to true pom.xml /Ascend line 7 Maven Java EE Configuration Problem
- Jersery——RESTful Web Services in Java,RESTful服务,Jersey+Spring实现REST服务调用
- JAVA与.NET的相互调用——通过Web服务实现相互调用
- JAVA与.NET的相互调用——通过Web服务实现相互调用(附原代码)
- CentOS 6.5环境下使用HAProxy+apache实现web服务的动静分离