• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Web Service实现的关注点分离

发布: 2008-2-22 12:32 | 作者: Tieu Luu | 来源: dev2dev | 查看: 341次 | 进入软件测试论坛讨论

领测软件测试网

<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具有访问决策管理器(access decision manager)的三个具体实现:AffirmativeBased、ConsensusBased和UnanimousBased。Acegi根据投票人对是否授权某用户进行访问以执行特定操作的投票,来实施访问策略。计算投票数来决定是否应该授权访问。我们选择了UnanimousBased访问决策管理器,为了客户端能够执行操作,需要所有的投票都授权访问。用户应该阅读Acegi文档,以获取对该访问决策的更深入说明。下面,我们必须配置带有投票人列表的accessDecisionManager。这里我们仅使用一个名为RoleVoter投票人。这是来自Acegi的类,根据基于角色访问控制对是否授权访问进行投票。用户还应参考Acegi文档,以获取对RoleVoter工作方式的更深入说明。

  需要配置的最后一个属性是objectDefinitionSource。这就是如何指定访问受保护的对象上不同方法所需要的认证。在这里,我们只想保护transferFunds()方法,并且只允许访问manager。通过列出所有符合条件的类名、方法名和进行访问所需的角色来实现:

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

43/4<1234>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网