ONJava.com -- Web 服务实现中的概念分离 --> page 3
来源:互联网 发布:sql年龄格式转换 编辑:程序博客网 时间:2024/05/22 00:05
Acegi 安全配置
现在我们来讨论如何在 Spring 配置文件中配置 Acegi 安全性。 如上文所述,我们已经配置了业务逻辑 Bean,使其方法调用被 securityInterceptor
Bean 拦截以执行安全性检查。 让我们来看看这个 Bean 是如何配置的。 下面展示了 securityInterceptor
Bean 的 Spring 配置文件片段。 securityInterceptor
Bean 是由一个称为 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
属性来配置 securityInterceptor
Bean 以指示使用哪种授权方式。 由于设计上依靠 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
- ONJava.com -- Web 服务实现中的概念分离 --> page 3
- ONJava.com -- Web 服务实现中的概念分离 --> page 1
- ONJava.com -- Web 服务实现中的概念分离 --> page 2
- ONJava.com -- JBoss Seam --> page 3
- ONJava.com -- JBoss Seam --> page 1
- ONJava.com -- Jboss-seam --> page 2
- ONJava.com -- JBoss Seam --> page 4
- ONJava.com -- JBoss Seam --> page 5
- 分离码实现web服务中的信息安全传输
- 几篇文章from ONJava.com
- 动静分离实现 应用服务器websphere,web服务ihs
- onjava
- Onjava
- OnJava推荐的Singleton实现
- 001 web服务概念
- web.xml中的 error-page
- .Net Remoting(分离服务程序实现) - Part.3
- .Net Remoting(分离服务程序实现) - Part.3
- Vncconfig功能分析
- 正则表达式-常用
- VNC实现原理
- 树目录
- 正则表达式总结
- ONJava.com -- Web 服务实现中的概念分离 --> page 3
- typedef用法小结
- 就从脚下开始...
- 经典SQL注入攻击法
- C#基本语法之C#函数重载
- 边缘化的GIS——Traditional GIS No Longer Necessary
- 甲骨文能为Siebel提供长期技术支持吗?
- 电影推荐《欢迎来到东莫村》
- 甲骨文推出PeopleSoft Enterprise按需服务和Siebel CRM按需服务