|  | @@ -0,0 +1,133 @@
 | 
	
		
			
				|  |  | +<?xml version="1.0" encoding="UTF-8"?>
 | 
	
		
			
				|  |  | +<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!--
 | 
	
		
			
				|  |  | +  - Application context containing authentication, channel
 | 
	
		
			
				|  |  | +  - security and web URI beans.
 | 
	
		
			
				|  |  | +  -
 | 
	
		
			
				|  |  | +  - Only used by "ldap" artifact.
 | 
	
		
			
				|  |  | +  -
 | 
	
		
			
				|  |  | +  - $Id$
 | 
	
		
			
				|  |  | +  -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<beans>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <!-- ======================== FILTER CHAIN ======================= -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	<!--  if you wish to use channel security, add "channelProcessingFilter," in front
 | 
	
		
			
				|  |  | +	      of "httpSessionContextIntegrationFilter" in the list below -->
 | 
	
		
			
				|  |  | +	<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
 | 
	
		
			
				|  |  | +      <property name="filterInvocationDefinitionSource">
 | 
	
		
			
				|  |  | +         <value>
 | 
	
		
			
				|  |  | +		    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
 | 
	
		
			
				|  |  | +		    PATTERN_TYPE_APACHE_ANT
 | 
	
		
			
				|  |  | +            /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,securityEnforcementFilter
 | 
	
		
			
				|  |  | +         </value>
 | 
	
		
			
				|  |  | +      </property>
 | 
	
		
			
				|  |  | +  </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <!-- ======================== AUTHENTICATION ======================= -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
 | 
	
		
			
				|  |  | +      <property name="providers">
 | 
	
		
			
				|  |  | +         <list>
 | 
	
		
			
				|  |  | +            <ref local="ldapAuthenticationProvider"/>
 | 
	
		
			
				|  |  | +         </list>
 | 
	
		
			
				|  |  | +      </property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="initialDirContextFactory" class="org.acegisecurity.providers.ldap.DefaultInitialDirContextFactory">
 | 
	
		
			
				|  |  | +     <property name="managerDn"><value>cn=manager,dc=acegisecurity,dc=org</value></property>
 | 
	
		
			
				|  |  | +     <property name="managerPassword"><value>acegisecurity</value></property>
 | 
	
		
			
				|  |  | +     <property name="url"><value>ldap://monkeymachine:389/dc=acegisecurity,dc=org</value></property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="ldapAuthenticationProvider" class="org.acegisecurity.providers.ldap.LdapAuthenticationProvider">
 | 
	
		
			
				|  |  | +     <property name="authenticator"><ref local="ldapAuthenticator"/></property>
 | 
	
		
			
				|  |  | +     <property name="authoritiesPopulator"><ref local="authoritiesPopulator"/></property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="authoritiesPopulator" class="org.acegisecurity.providers.ldap.populator.DefaultLdapAuthoritiesPopulator">
 | 
	
		
			
				|  |  | +      <property name="initialDirContextFactory"><ref local="initialDirContextFactory"/></property>
 | 
	
		
			
				|  |  | +      <property name="groupSearchBase"><value>ou=groups</value></property>
 | 
	
		
			
				|  |  | +      <property name="groupRoleAttribute"><value>ou</value></property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="ldapAuthenticator" class="org.acegisecurity.providers.ldap.authenticator.BindAuthenticator">
 | 
	
		
			
				|  |  | +      <property name="initialDirContextFactory"><ref local="initialDirContextFactory"/></property>
 | 
	
		
			
				|  |  | +      <property name="userDnPattern"><value>uid={0},ou=people</value></property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <!-- Automatically receives AuthenticationEvent messages -->
 | 
	
		
			
				|  |  | +   <bean id="loggerListener" class="org.acegisecurity.event.authentication.LoggerListener"/>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter">
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <!-- ===================== HTTP REQUEST SECURITY ==================== -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="securityEnforcementFilter" class="org.acegisecurity.intercept.web.SecurityEnforcementFilter">
 | 
	
		
			
				|  |  | +      <property name="filterSecurityInterceptor"><ref local="filterInvocationInterceptor"/></property>
 | 
	
		
			
				|  |  | +      <property name="authenticationEntryPoint"><ref local="authenticationProcessingFilterEntryPoint"/></property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter">
 | 
	
		
			
				|  |  | +      <property name="authenticationManager"><ref bean="authenticationManager"/></property>
 | 
	
		
			
				|  |  | +      <property name="authenticationFailureUrl"><value>/acegilogin.jsp?login_error=1</value></property>
 | 
	
		
			
				|  |  | +      <property name="defaultTargetUrl"><value>/</value></property>
 | 
	
		
			
				|  |  | +      <property name="filterProcessesUrl"><value>/j_acegi_security_check</value></property>
 | 
	
		
			
				|  |  | +   </bean>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   <bean id="authenticationProcessingFilterEntryPoint" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">
 | 
	
		
			
				|  |  | +      <property name="loginFormUrl"><value>/acegilogin.jsp</value></property>
 | 
	
		
			
				|  |  | +      <property name="forceHttps"><value>false</value></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>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	<!-- Note the order that entries are placed against the objectDefinitionSource is critical.
 | 
	
		
			
				|  |  | +	     The FilterSecurityInterceptor will work from the top of the list down to the FIRST pattern that matches the request URL.
 | 
	
		
			
				|  |  | +	     Accordingly, you should place MOST SPECIFIC (ie a/b/c/d.*) expressions first, with LEAST SPECIFIC (ie a/.*) expressions last -->
 | 
	
		
			
				|  |  | +	<bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
 | 
	
		
			
				|  |  | +    	<property name="authenticationManager"><ref local="authenticationManager"/></property>
 | 
	
		
			
				|  |  | +    	<property name="accessDecisionManager"><ref local="httpRequestAccessDecisionManager"/></property>
 | 
	
		
			
				|  |  | + 		<property name="objectDefinitionSource">
 | 
	
		
			
				|  |  | +			<value>
 | 
	
		
			
				|  |  | +			    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
 | 
	
		
			
				|  |  | +				\A/secure/super.*\Z=ROLE_WE_DONT_HAVE
 | 
	
		
			
				|  |  | +				\A/secure/.*\Z=ROLE_SUPERVISOR,ROLE_TELLER
 | 
	
		
			
				|  |  | +			</value>
 | 
	
		
			
				|  |  | +		</property>
 | 
	
		
			
				|  |  | +	</bean>
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	<!-- BASIC Regular Expression Syntax (for beginners):
 | 
	
		
			
				|  |  | +	     
 | 
	
		
			
				|  |  | +	     \A means the start of the string (ie the beginning of the URL)
 | 
	
		
			
				|  |  | +	     \Z means the end of the string (ie the end of the URL)
 | 
	
		
			
				|  |  | +	     .  means any single character
 | 
	
		
			
				|  |  | +	     *  means null or any number of repetitions of the last expression (so .* means zero or more characters)
 | 
	
		
			
				|  |  | +	     
 | 
	
		
			
				|  |  | +	     Some examples:
 | 
	
		
			
				|  |  | +	     
 | 
	
		
			
				|  |  | +	     Expression:   \A/my/directory/.*\Z
 | 
	
		
			
				|  |  | +	     Would match:    /my/directory/
 | 
	
		
			
				|  |  | +	                     /my/directory/hello.html
 | 
	
		
			
				|  |  | +	     
 | 
	
		
			
				|  |  | +	     Expression:   \A/.*\Z
 | 
	
		
			
				|  |  | +	     Would match:    /hello.html
 | 
	
		
			
				|  |  | +	                     /
 | 
	
		
			
				|  |  | +	     
 | 
	
		
			
				|  |  | +	     Expression:   \A/.*/secret.html\Z
 | 
	
		
			
				|  |  | +	     Would match:    /some/directory/secret.html
 | 
	
		
			
				|  |  | +	                     /another/secret.html
 | 
	
		
			
				|  |  | +	     Not match:      /anothersecret.html (missing required /)
 | 
	
		
			
				|  |  | +	-->    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +</beans>
 |