| 
					
				 | 
			
			
				@@ -12,12 +12,15 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd" --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- introspect all bean definitions for an explicit object of a "required" type, and if not found, add it. You can turn OFF ones you dont want added via attributes --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:security-autoconfig exceptionTranslation="disable" sessionContextIntegration="disable" logoutSupport="disable" filterChain="disable"  servletRequestEmulation="disabled" anonyomousRoleGranter="disabled"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:security-autoconfig exceptionTranslation="disable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sessionContextIntegration="disable" logoutSupport="disable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		filterChain="disable" servletRequestEmulation="disabled" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		anonyomousRoleGranter="disabled" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- autodetect attribute is the default, and an exception is thrown if false, as the expectation is they will write their own legacy <beans> format 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	FilterChainProxy bean definition is dissatisfied with the auto approach. The auto approach simply creates a bean definition similar to that shown 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	below with the AUTODETECT_ALL_ORDERED_FILTERs. As suggested, this causes a runtime check of app ctx for all javax.servlet.Filter instances, and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	for each that also implemented Ordered, these are automatically applied to the pattern shown (which is **/* in the case of autodetect=true).*--> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FilterChainProxy bean definition is dissatisfied with the auto approach. The auto approach simply creates a bean definition similar to that shown 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		below with the AUTODETECT_ALL_ORDERED_FILTERs. As suggested, this causes a runtime check of app ctx for all javax.servlet.Filter instances, and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for each that also implemented Ordered, these are automatically applied to the pattern shown (which is **/* in the case of autodetect=true).*--> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<security:filter-chain id="id" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<bean id="dcdc" class="FilterChainProxy"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<property name="chainConfig"> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,118 +33,151 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!--  also provide an OrderedFilterAdapter, impls Filter and Ordered, and can be configured declaratively in Spring XML (eg SiteMesh), setOrder, setDelegate(Filter object) --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- creates a bean definition for an AccessDecisionManager; strategy defaults to AffirmativeBased;  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	superclass AbstractAccessDecisionManager requires refactoring so if no setProvider(List) given, it introspects app ctx for all AccessDecisionVoters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	and uses their Ordered interface to apply them; if one doesn't implement Ordered, assume it is Integer.MAX_VALUE --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authorization-manager id="id" strategy="consensus|unanimous|affirmative"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		superclass AbstractAccessDecisionManager requires refactoring so if no setProvider(List) given, it introspects app ctx for all AccessDecisionVoters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		and uses their Ordered interface to apply them; if one doesn't implement Ordered, assume it is Integer.MAX_VALUE --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authorization-manager id="id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		strategy="consensus|unanimous|affirmative" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- ======================== AUTHENTICATION ======================= --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- sessionCreation defaults to ifRequired. --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:session-context-integration id="httpSessionContextIntegrationFilter" sessionCreation="never|ifRequired|always" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:session-context-integration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		id="httpSessionContextIntegrationFilter" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sessionCreation="never|ifRequired|always" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- The rules are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     AuthenticationManager interface is implemented by ProviderManager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     So if you have any auto-detection, create a ProviderManager definition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     If ProviderManager.setProvider(List) is never called, auto-detect all AuthenticationProviders from app ctx, using Ordered to resolve their order 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     Every authentication mechanism OR provider must start with security:authentication-something 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     Use appropriate attrs and elements depending on provider or mechanism 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authentication-repository id="id" repositoryBeanRef="beanIdOfRepositoryIfUnspecifiedAutoDetectTheirUserDetailsInstance"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:salt-source saltSourceBeanRef="beanRefOfAnExternalEncoder"/> <!--  or allow it to be written inline as an inner bean --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:password-encoder encoder="md5|md5Hex|sha|shaHex|custom" encoderBeanRef="beanRefOfAnExternalEncoder"/> <!-- same story here, inner beans allowed --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		AuthenticationManager interface is implemented by ProviderManager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		So if you have any auto-detection, create a ProviderManager definition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		If ProviderManager.setProvider(List) is never called, auto-detect all AuthenticationProviders from app ctx, using Ordered to resolve their order 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Every authentication mechanism OR provider must start with security:authentication-something 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Use appropriate attrs and elements depending on provider or mechanism 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	--> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authentication-repository id="id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		repositoryBeanRef="beanIdOfRepositoryIfUnspecifiedAutoDetectTheirUserDetailsInstance"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:salt-source 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			saltSourceBeanRef="beanRefOfAnExternalEncoder" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!--  or allow it to be written inline as an inner bean --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:password-encoder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			encoder="md5|md5Hex|sha|shaHex|custom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			encoderBeanRef="beanRefOfAnExternalEncoder" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<!-- same story here, inner beans allowed --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</security:authentication-repository> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<security:salt-source> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<security:system-wide systemWideSalt="12345"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<security-reflection userPropertyToUse="sss"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:system-wide systemWideSalt="12345" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security-reflection userPropertyToUse="sss" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</security:salt-source> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!--  the URLs are all mandatory and have no defaults (well, except authenticationUrl) --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authentication-form id="id" authenticationUrl="/login" loginFormUrl="/login.html" errorFormUrl="error.html"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authentication-form id="id" authenticationUrl="/login" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		loginFormUrl="/login.html" errorFormUrl="error.html" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- AuthenticationEntryPoints handled across the system via Ordered interface; every Acegi entry point has an order; the highest order wins and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	is used as the entry point by ExceptionTranslationFilter; for things like BasicAuthenticationfilter, they're smart enough to know they need a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	BasicAuthenticationProcessingFilterEntryPoint, so they use that one; here we have an entryPointOrder to say when we make the BasicEntryPoint, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	we will call setOrder(2) such that this app effectively will use somehing with a higher order as the app-wide default --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authentication-basic id="id" realmName="Spring Security Application" entryPointOrder="2"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		is used as the entry point by ExceptionTranslationFilter; for things like BasicAuthenticationfilter, they're smart enough to know they need a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BasicAuthenticationProcessingFilterEntryPoint, so they use that one; here we have an entryPointOrder to say when we make the BasicEntryPoint, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		we will call setOrder(2) such that this app effectively will use somehing with a higher order as the app-wide default --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authentication-basic id="id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		realmName="Spring Security Application" entryPointOrder="2" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- This is used if they want an out-of-the-bx UserDetailsService; if they write their own, this goes away and they wire a legacy bean definition and then the various 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	beans depending on a UserDetailsService will auto-detect it at runtime OR provide a way of setUserDetailsService(UserDetailsService) if to specified explicitly. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	If they fail to provide a repository, the security-autodetect will set one up for them with a few basic in-memory users and pwds --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		beans depending on a UserDetailsService will auto-detect it at runtime OR provide a way of setUserDetailsService(UserDetailsService) if to specified explicitly. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		If they fail to provide a repository, the security-autodetect will set one up for them with a few basic in-memory users and pwds --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<security:principal-repository id="id"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:ldap x="you can do the attributes and suitable nested elements"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:jdbc x="you can do the attributes and suitable nested elements"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:properties location="resourceStringToPropertiesFile"> <!-- if they specify a resource attrib, that means throw exception if they nest some user-definition data) --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<security:user-definition username="ben" password="nottellingYou" enabled="true" it="more stuff if you want"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<security:granted-authority authority="ROLE_ANONYMOUS"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<ref bean="fooBarAuthority"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:ldap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x="you can do the attributes and suitable nested elements" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:jdbc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			x="you can do the attributes and suitable nested elements" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			location="resourceStringToPropertiesFile"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<!-- if they specify a resource attrib, that means throw exception if they nest some user-definition data) --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<security:user-definition username="ben" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				password="nottellingYou" enabled="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				it="more stuff if you want"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<security:granted-authority authority="ROLE_ANONYMOUS" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<ref bean="fooBarAuthority" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</security:user-definition> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</security:properties> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</security:principal-repository> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- makes the filter, but does little else, as it auto-detects everything --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authentication-remember-me-filter id="id" rememberMeServicesBeanRef="theId" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authentication-remember-me-filter id="id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		rememberMeServicesBeanRef="theId" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- services should auto-detect UserDetails from app ctx if principalRepository was not specified; key is handled in same way as discussed earlier --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authentication-remember-me-services id="id" key="someValue" principalRepositoryBeanRef="jdbcDaoImpl" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authentication-remember-me-services id="id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		key="someValue" principalRepositoryBeanRef="jdbcDaoImpl" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- key is optional; if unspecified, in the NamespaceHandler pick a rnd int and use for all unspecified key properties for acegi beans --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:anonymous-role-granter " id="id" key="someValue" > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:granted-authority authority="ROLE_ANONYMOUS"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<ref bean="fooBarAuthority"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	</security:anonymous-role-granter>	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:anonymous-role-granter id="id" key="someValue"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:granted-authority authority="ROLE_ANONYMOUS" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<ref bean="fooBarAuthority" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	</security:anonymous-role-granter> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:granted-authority id="fooBarAuthority" authority="ROLE_FOOBAR"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:granted-authority id="fooBarAuthority" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		authority="ROLE_FOOBAR" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- If LogoutFilter does not have setHandlers populated, introspect app ctx for LogoutHandlers, using Ordered (if present, otherwise assume Integer.MAX_VALUE) --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- The logoutUrl and redirectAfterLogout are both optional and default to that shown --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:logout-support id="logoutFilter" redirectAfterLogoutUrl="/" logoutUrl="/logout"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:logout-support id="logoutFilter" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		redirectAfterLogoutUrl="/" logoutUrl="/logout" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- ===================== HTTP CHANNEL REQUIREMENTS ==================== --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!--  channel security out of scope; they use existing bean definition format; the channel filter will auto-detect and use Ordered interface as discussed above --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!--  any kind of ACL support is out of scope; frankly it is too hard for 1.1.0 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- ensure element name is not overlapping with portlet or spring web flow or tapestry URI patterns, as this filter is incompatible with them --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<security:authorization-http-url> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:url-mapping source="xml - the default and no other options" sourceBeanId="referenceToTheirObjectDefinitionSource"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:url-mapping 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			source="xml - the default and no other options" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sourceBeanId="referenceToTheirObjectDefinitionSource"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			<!-- Specify security:uri-patterns in order of processing; each pattern must specify EITHER a regularExpression OR a path, but not both 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				 and ALL patterns in the url-mapping MUST be of the SAME type (ie cannot mix a regular expression and Ant Path) - give exception if tried --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<security:uri-pattern path ="/index.jsp" regularExpression="whatever"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<security:configuration-attribute attribute="ROLE_A"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<ref bean="someExternalConfigurationAttributeThatIsATopLevelBean"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				and ALL patterns in the url-mapping MUST be of the SAME type (ie cannot mix a regular expression and Ant Path) - give exception if tried --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<security:uri-pattern path="/index.jsp" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				regularExpression="whatever"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<security:configuration-attribute attribute="ROLE_A" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<ref 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bean="someExternalConfigurationAttributeThatIsATopLevelBean" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</security:uri-pattern> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<security:uri-pattern path ="/**" regularExperssion="whatever"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<security:configuration-attribute attribute="ROLE_A"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<ref bean="someExternalConfigurationAttributeThatIsATopLevelBean"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<security:uri-pattern path="/**" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				regularExperssion="whatever"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<security:configuration-attribute attribute="ROLE_A" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<ref 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bean="someExternalConfigurationAttributeThatIsATopLevelBean" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</security:uri-pattern> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</security:url-mapping> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</security:authorization-http-url> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- the source refers to use of the relevant concete ObjectDefinitionSource; user can alternately specify their own instance and refer to it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	via the sourceBeanId property; in that case they must specify "custom"; if unspecified, it means it's described as nested elements using the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	security:method-pattern element, and you will therefore create it via the MethodDefinitionSourceEditor (that is what the default source=xml means, too) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	For aspectj and springAop, that means create a MethodSecurityInterceptor and AspectJSecurityInterceptor bean definition respectively (in the case of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	springAop, also create a MethodDefinitionSourceAdvisor); defaults to springAop=true, aspectJ=false --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:authorization-joinpoint aspectj="false|true" springAop="true|false" > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:url-mapping source="custom|xml|attributes|annotations" sourceBeanId="referenceToTheirObjectDefinitionSource"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			<security:method-pattern type="com.foo.Bar.whateverMethodNamePattern"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<security:configuration-attribute attribute="ROLE_A"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				<ref bean="someExternalConfigurationAttributeThatIsATopLevelBean"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		via the sourceBeanId property; in that case they must specify "custom"; if unspecified, it means it's described as nested elements using the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		security:method-pattern element, and you will therefore create it via the MethodDefinitionSourceEditor (that is what the default source=xml means, too) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		For aspectj and springAop, that means create a MethodSecurityInterceptor and AspectJSecurityInterceptor bean definition respectively (in the case of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		springAop, also create a MethodDefinitionSourceAdvisor); defaults to springAop=true, aspectJ=false --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:authorization-joinpoint aspectj="false|true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		springAop="true|false"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:url-mapping source="custom|xml|attributes|annotations" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sourceBeanId="referenceToTheirObjectDefinitionSource"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<security:method-pattern 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				type="com.foo.Bar.whateverMethodNamePattern"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<security:configuration-attribute attribute="ROLE_A" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<ref 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bean="someExternalConfigurationAttributeThatIsATopLevelBean" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			</security:method-pattern> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		</security:url-mapping> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		<!-- if get time, do a new security:pointcut-pattern --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</security:authorization-joinpoint> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<!-- Basically accessDeniedUrl is optional, we if unspecified impl will auto-detect any AccessDeniedHandler in ctx and use it;  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	alternately if there are > 1 such handlers, we can nominate the one to use via accessDeniedBeanRef; provide nested elements for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	other props; i do not mind if you move the access denied stuff to a sub-element --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<security:exception-translation id="id" accessDeniedUrl="/accessDenied.jsp" accessDeniedBeanRef="theBeanToUse"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<security:entry-point path="/acegilogin.jsp" https="boolean"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		alternately if there are > 1 such handlers, we can nominate the one to use via accessDeniedBeanRef; provide nested elements for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		other props; i do not mind if you move the access denied stuff to a sub-element --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<security:exception-translation id="id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		accessDeniedUrl="/accessDenied.jsp" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		accessDeniedBeanRef="theBeanToUse"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<security:entry-point path="/acegilogin.jsp" https="boolean" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	</security:exception-translation> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </beans> 
			 |