cas+acegi中app-config-acegi-security.xml的配置

 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<!-- ======================== Filter Chain ======================= -->
	<!-- if you need to use channel security, add "channelProcessingFilter," 
		before "httpSessionContextIntegrationFilter" -->
	<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
		<property name="filterInvocationDefinitionSource">
			<value>
        <![CDATA[
        CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
        PATTERN_TYPE_APACHE_ANT
        /**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
        ]]>
			</value>
		</property>
	</bean>
	<!-- ======================== authentication ======================= -->
	<!-- 调整的bean -->
	<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
		<property name="providers">
			<list>
				<ref local="casAuthenticationProvider" />
				<ref local="anonymousAuthenticationProvider" />
				<ref local="rememberMeAuthenticationProvider" />
			</list>
		</property>
	</bean>
	<!-- userDetailsService -->
	<bean id="userDetailsService" class="com.sinosoft.application.common.UserDetailsServiceImpl">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>
	<!-- passwordEncoder -->
	<bean id="passwordEncoder" class="com.sinosoft.application.common.SinosoftPasswordEncoder" />
	<bean id="daoAuthenticationProvider"
		class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
		<property name="userDetailsService">
			<ref local="userDetailsService" />
		</property>
		<property name="userCache">
			<ref local="userCache" />
		</property>
		<property name="passwordEncoder">
			<ref local="passwordEncoder" />
		</property>
	</bean>
	<bean id="cacheManager"
		class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
	<bean id="userCacheBackend" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
		<property name="cacheManager">
			<ref local="cacheManager" />
		</property>
		<property name="cacheName">
			<value>userCache</value>
		</property>
	</bean>
	<bean id="userCache"
		class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">
		<property name="cache">
			<ref local="userCacheBackend" />
		</property>
	</bean>
	<!-- Automatic recevie AuthenticationEvent -->
	<bean id="loggerListener" class="org.acegisecurity.event.authentication.LoggerListener" />
	<bean id="basicProcessingFilter" class="org.acegisecurity.ui.basicauth.BasicProcessingFilter">
		<property name="authenticationManager">
			<ref local="authenticationManager" />
		</property>
		<property name="authenticationEntryPoint">
			<ref local="basicProcessingFilterEntryPoint" />
		</property>
	</bean>
	<bean id="basicProcessingFilterEntryPoint"
		class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">
		<property name="realmName">
			<value>Contacts Realm</value>
		</property>
	</bean>
	<bean id="anonymousProcessingFilter"
		class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter">
		<property name="key">
			<value>foobar</value>
		</property>
		<property name="userAttribute">
			<value>anonymousUser,ROLE_ANONYMOUS</value>
		</property>
	</bean>
	<bean id="anonymousAuthenticationProvider"
		class="org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider">
		<property name="key">
			<value>foobar</value>
		</property>
	</bean>
	<bean id="httpSessionContextIntegrationFilter"
		class="org.acegisecurity.context.HttpSessionContextIntegrationFilter">
	</bean>
	<bean id="rememberMeProcessingFilter"
		class="org.acegisecurity.ui.rememberme.RememberMeProcessingFilter">
		<property name="authenticationManager">
			<ref local="authenticationManager" />
		</property>
		<property name="rememberMeServices">
			<ref local="rememberMeServices" />
		</property>
	</bean>
	<bean id="rememberMeServices"
		class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices">
		<property name="userDetailsService">
			<ref local="userDetailsService" />
		</property>
		<property name="key">
			<value>springRocks</value>
		</property>
	</bean>
	<bean id="rememberMeAuthenticationProvider"
		class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider">
		<property name="key">
			<value>springRocks</value>
		</property>
	</bean>
	<bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">
		<constructor-arg value="/index.jsp" /><!-- URL at logout -->
		<constructor-arg>
			<list>
				<ref bean="rememberMeServices" />
				<bean class="com.sinosoft.application.common.CustomAcegiLogoutHandler" />
			</list>
		</constructor-arg>
	</bean>
	<bean id="securityContextHolderAwareRequestFilter"
		class="org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter" />

	<bean id="channelProcessingFilter" class="org.acegisecurity.securechannel.ChannelProcessingFilter">
		<property name="channelDecisionManager">
			<ref local="channelDecisionManager" />
		</property>
		<property name="filterInvocationDefinitionSource">
			<value>
        <![CDATA[
          CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
          PATTERN_TYPE_APACHE_ANT
          /common/login.jsp=REQUIRES_SECURE_CHANNEL
          /*.do=REQUIRES_SECURE_CHANNEL 
          /*.jsp=REQUIRES_SECURE_CHANNEL          
        ]]>
			</value>
		</property>
	</bean>
	<bean id="channelDecisionManager"
		class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl">
		<property name="channelProcessors">
			<list>
				<ref local="secureChannelProcessor" />
				<ref local="insecureChannelProcessor" />
			</list>
		</property>
	</bean>
	<bean id="secureChannelProcessor" class="org.acegisecurity.securechannel.SecureChannelProcessor" />
	<bean id="insecureChannelProcessor"
		class="org.acegisecurity.securechannel.InsecureChannelProcessor" />
	<!-- ===================== HTTP REQUEST Secrity ==================== -->
	<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">
		<property name="authenticationEntryPoint">
			<ref local="authenticationProcessingFilterEntryPoint" />
		</property>
		<property name="accessDeniedHandler">
			<bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl">
				<property name="errorPage" value="/common/LoginError.jsp" />
			</bean>
		</property>
	</bean>
	<!-- 调整的bean -->
	<bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.cas.CasProcessingFilter">
		<property name="authenticationManager">
			<ref bean="authenticationManager" />
		</property>
		<property name="authenticationFailureUrl">
			<value>/common/LoginError.jsp</value>
		</property>
		<property name="defaultTargetUrl">
			<value>/</value>
		</property>
		<property name="filterProcessesUrl">
			<value>/j_acegi_security_check</value>
		</property>
		<!-- <property name="rememberMeServices"> <ref local="rememberMeServices" 
			/> </property> -->
	</bean>
	<!-- 调整的bean -->
	<bean id="authenticationProcessingFilterEntryPoint" class="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint">
		<property name="loginUrl">
			<value>http://127.0.0.1:7001/casserver/login</value>
		</property>
		<property name="serviceProperties">
			<ref bean="serviceProperties" />
		</property>
	</bean>
	<bean id="httpRequestAccessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">
		<property name="allowIfAllAbstainDecisions">
			<value>false</value>
		</property>
		<property name="decisionVoters">
			<list>
				<ref bean="roleVoter" />
			</list>
		</property>
	</bean>

	<bean id="filterInvocationInterceptor"
		class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
		<property name="authenticationManager">
			<ref bean="authenticationManager" />
		</property>
		<property name="accessDecisionManager">
			<ref local="httpRequestAccessDecisionManager" />
		</property>
		<property name="objectDefinitionSource">
			<value>
        <![CDATA[
          CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
          PATTERN_TYPE_APACHE_ANT
          /*.do=ROLE_USER 
          /*.jsp=ROLE_USER     
        ]]>
			</value>
		</property>
	</bean>
	<!-- switch user Filter. -->
	<bean id="switchUserProcessingFilter"
		class="org.acegisecurity.ui.switchuser.SwitchUserProcessingFilter">
		<property name="userDetailsService" ref="userDetailsService" />
		<property name="switchUserUrl">
			<value>/j_acegi_switch_user</value>
		</property>
		<property name="exitUserUrl">
			<value>/j_acegi_exit_user</value>
		</property>
		<property name="targetUrl">
			<value>/index.jsp</value>
		</property>
	</bean>
	<bean id="messageSource"
		class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basenames">
			<list>
				<value>classpath:/org/acegisecurity/messages</value>
			</list>
		</property>
	</bean>

	<bean id="org.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION"
		class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
		<property name="staticField">
			<value>org.acegisecurity.acl.basic.SimpleAclEntry.ADMINISTRATION</value>
		</property>
	</bean>
	<bean id="org.acegisecurity.acl.basic.SimpleAclEntry.READ"
		class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
		<property name="staticField">
			<value>org.acegisecurity.acl.basic.SimpleAclEntry.READ</value>
		</property>
	</bean>
	<bean id="org.acegisecurity.acl.basic.SimpleAclEntry.DELETE"
		class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
		<property name="staticField">
			<value>org.acegisecurity.acl.basic.SimpleAclEntry.DELETE</value>
		</property>
	</bean>
	<!-- An access decision voter that reads ROLE_* configuration settings -->
	<bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />
	<!-- An access decision manager used by the business objects -->
	<bean id="businessAccessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">
		<property name="allowIfAllAbstainDecisions">
			<value>false</value>
		</property>
		<property name="decisionVoters">
			<list>
				<ref local="roleVoter" />
			</list>
		</property>
	</bean>
	<!-- ========= ACCESS CONTROL LIST========= -->
	<bean id="aclManager" class="org.acegisecurity.acl.AclProviderManager">
		<property name="providers">
			<list>
				<ref local="basicAclProvider" />
			</list>
		</property>
	</bean>
	<bean id="basicAclProvider" class="org.acegisecurity.acl.basic.BasicAclProvider">
		<property name="basicAclDao">
			<ref local="basicAclExtendedDao" />
		</property>
	</bean>
	<bean id="basicAclExtendedDao" class="org.acegisecurity.acl.basic.jdbc.JdbcExtendedDaoImpl">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="aclsByObjectIdentityQuery">
			<value>SELECT 'ROLE_USER', '1' FROM UtiUserGrade WHERE 1=1 OR
				userCode != ?</value>
		</property>
	</bean>
	<!-- ============== "AFTER INTERCEPTION" AUTHORIZATION DEFINITIONS =========== -->
	<bean id="afterInvocationManager"
		class="org.acegisecurity.afterinvocation.AfterInvocationProviderManager">
		<property name="providers">
			<list>
				<ref local="afterAclRead" />
				<ref local="afterAclCollectionRead" />
			</list>
		</property>
	</bean>
	<!-- Processes AFTER_ACL_COLLECTION_READ configuration settings -->
	<bean id="afterAclCollectionRead"
		class="org.acegisecurity.afterinvocation.BasicAclEntryAfterInvocationCollectionFilteringProvider">
		<property name="aclManager">
			<ref local="aclManager" />
		</property>
		<property name="requirePermission">
			<list>
				<ref local="org.acegisecurity.acl.basic.SimpleAclEntry.READ" />
			</list>
		</property>
	</bean>
	<!-- Processes AFTER_ACL_READ configuration settings -->
	<bean id="afterAclRead"
		class="org.acegisecurity.afterinvocation.BasicAclEntryAfterInvocationProvider">
		<property name="aclManager">
			<ref local="aclManager" />
		</property>
		<property name="requirePermission">
			<list>
				<ref local="org.acegisecurity.acl.basic.SimpleAclEntry.READ" />
			</list>
		</property>
	</bean>
	<!-- ================= METHOD INVOCATION AUTHORIZATION ==================== -->
	<!-- securityInterceptor. -->
	<bean id="securityInterceptor"
		class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
		<property name="authenticationManager">
			<ref bean="authenticationManager" />
		</property>
		<property name="accessDecisionManager">
			<ref local="businessAccessDecisionManager" />
		</property>
		<property name="afterInvocationManager">
			<ref local="afterInvocationManager" />
		</property>
		<property name="objectDefinitionSource">
			<value>
				<!-- com.sinosoft.application.exam.service.facade.ExQuestionService.*=ROLE_USER 
					com.sinosoft.application.exam.service.facade.ExUserService.*=ROLE_USER -->
			</value>
		</property>
	</bean>

	<!-- 以下为新添bean -->
	<bean id="casAuthenticationProvider"
		class="org.acegisecurity.providers.cas.CasAuthenticationProvider">
		<property name="ticketValidator">
			<ref bean="ticketValidator" />
		</property>
		<property name="casProxyDecider">
			<ref bean="casProxyDecider" />
		</property>
		<property name="statelessTicketCache">
			<ref bean="statelessTicketCache" />
		</property>
		<property name="casAuthoritiesPopulator">
			<ref bean="casAuthritiesPopulator" />
		</property>
		<property name="key">
			<value>some_unique_key</value>
		</property>
	</bean>

	<bean id="ticketValidator"
		class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator">
		<property name="casValidate">
			<value>http://127.0.0.1:7001/casserver/proxyValidate</value>
		</property>
		<property name="serviceProperties">
			<ref bean="serviceProperties" />
		</property>
	</bean>

	<bean id="serviceProperties" class="org.acegisecurity.ui.cas.ServiceProperties">
		<property name="service">
			<value>http://127.0.0.1:7001/index-origin.jsp</value>
		</property>
	</bean>
	<bean id="casProxyDecider"
		class="org.acegisecurity.providers.cas.proxy.RejectProxyTickets" />


	<bean id="statelessTicketCache"
		class="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache">
		<property name="cache">
			<bean class="org.springframework.cache.ehcache.EhCacheFactoryBean">
				<property name="cacheManager">
					<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
				</property>
				<property name="cacheName" value="userCache" />
			</bean>
		</property>
	</bean>

	<bean id="casAuthritiesPopulator"
		class="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator">
		<property name="userDetailsService">
			<ref bean="userDetailsService" />
		</property>
	</bean>
	
	<!-- 以上为新添bean -->
</beans>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值