mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-10-30 22:28:46 +00:00 
			
		
		
		
	SEC-1125: Created separate web module spring-security-web
This commit is contained in:
		
							parent
							
								
									2c985a1c36
								
							
						
					
					
						commit
						2a9a8a41db
					
				| @ -56,10 +56,6 @@ | |||||||
|             <artifactId>hsqldb</artifactId> |             <artifactId>hsqldb</artifactId> | ||||||
|             <scope>test</scope> |             <scope>test</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.jmock</groupId> |  | ||||||
|             <artifactId>jmock-junit4</artifactId> |  | ||||||
|         </dependency> |  | ||||||
|     </dependencies> |     </dependencies> | ||||||
| 
 | 
 | ||||||
| </project> | </project> | ||||||
|  | |||||||
| @ -14,9 +14,8 @@ | |||||||
|  */ |  */ | ||||||
| package org.springframework.security.acls.domain; | package org.springframework.security.acls.domain; | ||||||
| 
 | 
 | ||||||
| import org.apache.commons.logging.Log; |  | ||||||
| import org.apache.commons.logging.LogFactory; |  | ||||||
| import static org.junit.Assert.*; | import static org.junit.Assert.*; | ||||||
|  | 
 | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| import org.springframework.security.acls.Permission; | import org.springframework.security.acls.Permission; | ||||||
| 
 | 
 | ||||||
| @ -28,9 +27,6 @@ import org.springframework.security.acls.Permission; | |||||||
|  * @version $Id${date} |  * @version $Id${date} | ||||||
|  */ |  */ | ||||||
| public class PermissionTests { | public class PermissionTests { | ||||||
|     private static final Log LOGGER = LogFactory.getLog(PermissionTests.class); |  | ||||||
| 
 |  | ||||||
|     //~ Methods ======================================================================================================== |  | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void basePermissionTest() { |     public void basePermissionTest() { | ||||||
|  | |||||||
| @ -15,6 +15,11 @@ | |||||||
|             <artifactId>spring-security-core</artifactId> |             <artifactId>spring-security-core</artifactId> | ||||||
|             <version>${project.version}</version> |             <version>${project.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.security</groupId> | ||||||
|  |             <artifactId>spring-security-web</artifactId> | ||||||
|  |             <version>${project.version}</version> | ||||||
|  |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework.security</groupId> |             <groupId>org.springframework.security</groupId> | ||||||
|             <artifactId>spring-security-core</artifactId> |             <artifactId>spring-security-core</artifactId> | ||||||
|  | |||||||
| @ -15,6 +15,18 @@ | |||||||
|             <artifactId>spring-security-core</artifactId> |             <artifactId>spring-security-core</artifactId> | ||||||
|             <version>${project.version}</version> |             <version>${project.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.security</groupId> | ||||||
|  |             <artifactId>spring-security-web</artifactId> | ||||||
|  |             <version>${project.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.security</groupId> | ||||||
|  |             <artifactId>spring-security-web</artifactId> | ||||||
|  |             <version>${project.version}</version> | ||||||
|  |             <classifier>tests</classifier> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>commons-logging</groupId> |             <groupId>commons-logging</groupId> | ||||||
|             <artifactId>commons-logging</artifactId> |             <artifactId>commons-logging</artifactId> | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import org.springframework.beans.factory.support.RootBeanDefinition; | |||||||
| import org.springframework.beans.factory.xml.BeanDefinitionParser; | import org.springframework.beans.factory.xml.BeanDefinitionParser; | ||||||
| import org.springframework.beans.factory.xml.ParserContext; | import org.springframework.beans.factory.xml.ParserContext; | ||||||
| import org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider; | import org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider; | ||||||
| import org.springframework.security.providers.anonymous.AnonymousProcessingFilter; | import org.springframework.security.ui.anonymous.AnonymousProcessingFilter; | ||||||
| import org.springframework.util.StringUtils; | import org.springframework.util.StringUtils; | ||||||
| import org.w3c.dom.Element; | import org.w3c.dom.Element; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,11 +14,11 @@ import org.springframework.beans.factory.support.RootBeanDefinition; | |||||||
| import org.springframework.beans.factory.xml.ParserContext; | import org.springframework.beans.factory.xml.ParserContext; | ||||||
| import org.springframework.security.afterinvocation.AfterInvocationProviderManager; | import org.springframework.security.afterinvocation.AfterInvocationProviderManager; | ||||||
| import org.springframework.security.expression.method.MethodExpressionVoter; | import org.springframework.security.expression.method.MethodExpressionVoter; | ||||||
| import org.springframework.security.util.UrlUtils; |  | ||||||
| import org.springframework.security.vote.AccessDecisionVoter; | import org.springframework.security.vote.AccessDecisionVoter; | ||||||
| import org.springframework.security.vote.AffirmativeBased; | import org.springframework.security.vote.AffirmativeBased; | ||||||
| import org.springframework.security.vote.AuthenticatedVoter; | import org.springframework.security.vote.AuthenticatedVoter; | ||||||
| import org.springframework.security.vote.RoleVoter; | import org.springframework.security.vote.RoleVoter; | ||||||
|  | import org.springframework.security.web.util.UrlUtils; | ||||||
| import org.springframework.util.StringUtils; | import org.springframework.util.StringUtils; | ||||||
| import org.w3c.dom.Element; | import org.w3c.dom.Element; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -18,18 +18,18 @@ import org.springframework.core.OrderComparator; | |||||||
| import org.springframework.core.Ordered; | import org.springframework.core.Ordered; | ||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.config.ConfigUtils.FilterChainList; | import org.springframework.security.config.ConfigUtils.FilterChainList; | ||||||
| import org.springframework.security.context.SecurityContextPersistenceFilter; | import org.springframework.security.context.web.SecurityContextPersistenceFilter; | ||||||
| import org.springframework.security.intercept.web.DefaultFilterInvocationSecurityMetadataSource; | import org.springframework.security.intercept.web.DefaultFilterInvocationSecurityMetadataSource; | ||||||
| import org.springframework.security.intercept.web.FilterSecurityInterceptor; | import org.springframework.security.intercept.web.FilterSecurityInterceptor; | ||||||
| import org.springframework.security.providers.anonymous.AnonymousAuthenticationToken; | import org.springframework.security.providers.anonymous.AnonymousAuthenticationToken; | ||||||
| import org.springframework.security.providers.anonymous.AnonymousProcessingFilter; |  | ||||||
| import org.springframework.security.ui.ExceptionTranslationFilter; | import org.springframework.security.ui.ExceptionTranslationFilter; | ||||||
| import org.springframework.security.ui.SessionFixationProtectionFilter; | import org.springframework.security.ui.SessionFixationProtectionFilter; | ||||||
|  | import org.springframework.security.ui.anonymous.AnonymousProcessingFilter; | ||||||
| import org.springframework.security.ui.basicauth.BasicProcessingFilter; | import org.springframework.security.ui.basicauth.BasicProcessingFilter; | ||||||
| import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; | import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; | ||||||
| import org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint; | import org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint; | ||||||
| import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; | import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; | ||||||
| import org.springframework.security.util.FilterChainProxy; | import org.springframework.security.web.util.FilterChainProxy; | ||||||
| import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ import org.springframework.security.ConfigAttribute; | |||||||
| import org.springframework.security.SecurityConfig; | import org.springframework.security.SecurityConfig; | ||||||
| import org.springframework.security.expression.method.MethodExpressionAfterInvocationProvider; | import org.springframework.security.expression.method.MethodExpressionAfterInvocationProvider; | ||||||
| import org.springframework.security.expression.method.MethodExpressionVoter; | import org.springframework.security.expression.method.MethodExpressionVoter; | ||||||
| import org.springframework.security.expression.support.DefaultSecurityExpressionHandler; | import org.springframework.security.expression.support.DefaultMethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.intercept.method.DelegatingMethodSecurityMetadataSource; | import org.springframework.security.intercept.method.DelegatingMethodSecurityMetadataSource; | ||||||
| import org.springframework.security.intercept.method.MapBasedMethodSecurityMetadataSource; | import org.springframework.security.intercept.method.MapBasedMethodSecurityMetadataSource; | ||||||
| import org.springframework.security.intercept.method.ProtectPointcutPostProcessor; | import org.springframework.security.intercept.method.ProtectPointcutPostProcessor; | ||||||
| @ -95,7 +95,7 @@ class GlobalMethodSecurityBeanDefinitionParser implements BeanDefinitionParser { | |||||||
|             if (StringUtils.hasText(expressionHandlerRef)) { |             if (StringUtils.hasText(expressionHandlerRef)) { | ||||||
|                 logger.info("Using bean '" + expressionHandlerRef + "' as method SecurityExpressionHandler implementation"); |                 logger.info("Using bean '" + expressionHandlerRef + "' as method SecurityExpressionHandler implementation"); | ||||||
|             } else { |             } else { | ||||||
|                 parserContext.getRegistry().registerBeanDefinition(EXPRESSION_HANDLER_ID, new RootBeanDefinition(DefaultSecurityExpressionHandler.class)); |                 parserContext.getRegistry().registerBeanDefinition(EXPRESSION_HANDLER_ID, new RootBeanDefinition(DefaultMethodSecurityExpressionHandler.class)); | ||||||
|                 logger.warn("Expressions were enabled for method security but no SecurityExpressionHandler was configured. " + |                 logger.warn("Expressions were enabled for method security but no SecurityExpressionHandler was configured. " + | ||||||
|                         "All hasPermision() expressions will evaluate to false."); |                         "All hasPermision() expressions will evaluate to false."); | ||||||
|                 expressionHandlerRef = EXPRESSION_HANDLER_ID; |                 expressionHandlerRef = EXPRESSION_HANDLER_ID; | ||||||
|  | |||||||
| @ -19,8 +19,8 @@ import org.springframework.beans.factory.xml.ParserContext; | |||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.ConfigAttributeEditor; | import org.springframework.security.ConfigAttributeEditor; | ||||||
| import org.springframework.security.SecurityConfig; | import org.springframework.security.SecurityConfig; | ||||||
| import org.springframework.security.context.HttpSessionSecurityContextRepository; | import org.springframework.security.context.web.HttpSessionSecurityContextRepository; | ||||||
| import org.springframework.security.context.SecurityContextPersistenceFilter; | import org.springframework.security.context.web.SecurityContextPersistenceFilter; | ||||||
| import org.springframework.security.expression.web.WebExpressionVoter; | import org.springframework.security.expression.web.WebExpressionVoter; | ||||||
| import org.springframework.security.intercept.web.DefaultFilterInvocationSecurityMetadataSource; | import org.springframework.security.intercept.web.DefaultFilterInvocationSecurityMetadataSource; | ||||||
| import org.springframework.security.intercept.web.FilterSecurityInterceptor; | import org.springframework.security.intercept.web.FilterSecurityInterceptor; | ||||||
| @ -36,12 +36,12 @@ import org.springframework.security.ui.ExceptionTranslationFilter; | |||||||
| import org.springframework.security.ui.SessionFixationProtectionFilter; | import org.springframework.security.ui.SessionFixationProtectionFilter; | ||||||
| import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; | import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; | ||||||
| import org.springframework.security.util.AntUrlPathMatcher; | import org.springframework.security.util.AntUrlPathMatcher; | ||||||
| import org.springframework.security.util.FilterChainProxy; |  | ||||||
| import org.springframework.security.util.RegexUrlPathMatcher; | import org.springframework.security.util.RegexUrlPathMatcher; | ||||||
| import org.springframework.security.util.UrlMatcher; | import org.springframework.security.util.UrlMatcher; | ||||||
| import org.springframework.security.vote.AccessDecisionVoter; | import org.springframework.security.vote.AccessDecisionVoter; | ||||||
| import org.springframework.security.vote.AuthenticatedVoter; | import org.springframework.security.vote.AuthenticatedVoter; | ||||||
| import org.springframework.security.vote.RoleVoter; | import org.springframework.security.vote.RoleVoter; | ||||||
|  | import org.springframework.security.web.util.FilterChainProxy; | ||||||
| import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | ||||||
| import org.springframework.util.StringUtils; | import org.springframework.util.StringUtils; | ||||||
| import org.springframework.util.xml.DomUtils; | import org.springframework.util.xml.DomUtils; | ||||||
| @ -107,7 +107,7 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser { | |||||||
|     private static final String ATT_DISABLE_URL_REWRITING = "disable-url-rewriting"; |     private static final String ATT_DISABLE_URL_REWRITING = "disable-url-rewriting"; | ||||||
| 
 | 
 | ||||||
|     private static final String EXPRESSION_FIDS_CLASS = "org.springframework.security.expression.web.ExpressionBasedFilterInvocationSecurityMetadataSource"; |     private static final String EXPRESSION_FIDS_CLASS = "org.springframework.security.expression.web.ExpressionBasedFilterInvocationSecurityMetadataSource"; | ||||||
|     private static final String EXPRESSION_HANDLER_CLASS = "org.springframework.security.expression.support.DefaultSecurityExpressionHandler"; |     private static final String EXPRESSION_HANDLER_CLASS = "org.springframework.security.expression.web.support.DefaultWebSecurityExpressionHandler"; | ||||||
|     private static final String EXPRESSION_HANDLER_ID = "_webExpressionHandler"; |     private static final String EXPRESSION_HANDLER_ID = "_webExpressionHandler"; | ||||||
| 
 | 
 | ||||||
|     @SuppressWarnings("unchecked") |     @SuppressWarnings("unchecked") | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| package org.springframework.security.config; | package org.springframework.security.config; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.util.PortMapperImpl; | import org.springframework.security.web.util.PortMapperImpl; | ||||||
| import org.springframework.beans.factory.xml.BeanDefinitionParser; | import org.springframework.beans.factory.xml.BeanDefinitionParser; | ||||||
| import org.springframework.beans.factory.xml.ParserContext; | import org.springframework.beans.factory.xml.ParserContext; | ||||||
| import org.springframework.beans.factory.config.BeanDefinition; | import org.springframework.beans.factory.config.BeanDefinition; | ||||||
| @ -15,7 +15,7 @@ import java.util.Map; | |||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Parses a port-mappings element, producing a single {@link org.springframework.security.util.PortMapperImpl} |  * Parses a port-mappings element, producing a single {@link org.springframework.security.web.util.PortMapperImpl} | ||||||
|  * bean. |  * bean. | ||||||
|  * |  * | ||||||
|  * @author Luke Taylor |  * @author Luke Taylor | ||||||
|  | |||||||
| @ -26,21 +26,21 @@ import org.springframework.security.concurrent.ConcurrentLoginException; | |||||||
| import org.springframework.security.concurrent.ConcurrentSessionControllerImpl; | import org.springframework.security.concurrent.ConcurrentSessionControllerImpl; | ||||||
| import org.springframework.security.concurrent.ConcurrentSessionFilter; | import org.springframework.security.concurrent.ConcurrentSessionFilter; | ||||||
| import org.springframework.security.config.util.InMemoryXmlApplicationContext; | import org.springframework.security.config.util.InMemoryXmlApplicationContext; | ||||||
| import org.springframework.security.context.HttpSessionSecurityContextRepository; |  | ||||||
| import org.springframework.security.context.SecurityContextHolder; | import org.springframework.security.context.SecurityContextHolder; | ||||||
| import org.springframework.security.context.SecurityContextPersistenceFilter; | import org.springframework.security.context.web.HttpSessionSecurityContextRepository; | ||||||
|  | import org.springframework.security.context.web.SecurityContextPersistenceFilter; | ||||||
| import org.springframework.security.intercept.web.FilterInvocation; | import org.springframework.security.intercept.web.FilterInvocation; | ||||||
| import org.springframework.security.intercept.web.FilterInvocationSecurityMetadataSource; | import org.springframework.security.intercept.web.FilterInvocationSecurityMetadataSource; | ||||||
| import org.springframework.security.intercept.web.FilterSecurityInterceptor; | import org.springframework.security.intercept.web.FilterSecurityInterceptor; | ||||||
| import org.springframework.security.providers.TestingAuthenticationToken; | import org.springframework.security.providers.TestingAuthenticationToken; | ||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
| import org.springframework.security.providers.anonymous.AnonymousProcessingFilter; |  | ||||||
| import org.springframework.security.securechannel.ChannelProcessingFilter; | import org.springframework.security.securechannel.ChannelProcessingFilter; | ||||||
| import org.springframework.security.ui.AuthenticationFailureHandler; | import org.springframework.security.ui.AuthenticationFailureHandler; | ||||||
| import org.springframework.security.ui.AuthenticationSuccessHandler; | import org.springframework.security.ui.AuthenticationSuccessHandler; | ||||||
| import org.springframework.security.ui.ExceptionTranslationFilter; | import org.springframework.security.ui.ExceptionTranslationFilter; | ||||||
| import org.springframework.security.ui.SessionFixationProtectionFilter; | import org.springframework.security.ui.SessionFixationProtectionFilter; | ||||||
| import org.springframework.security.ui.WebAuthenticationDetails; | import org.springframework.security.ui.WebAuthenticationDetails; | ||||||
|  | import org.springframework.security.ui.anonymous.AnonymousProcessingFilter; | ||||||
| import org.springframework.security.ui.basicauth.BasicProcessingFilter; | import org.springframework.security.ui.basicauth.BasicProcessingFilter; | ||||||
| import org.springframework.security.ui.logout.LogoutFilter; | import org.springframework.security.ui.logout.LogoutFilter; | ||||||
| import org.springframework.security.ui.logout.LogoutHandler; | import org.springframework.security.ui.logout.LogoutHandler; | ||||||
| @ -49,9 +49,8 @@ import org.springframework.security.ui.rememberme.PersistentTokenBasedRememberMe | |||||||
| import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; | import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; | ||||||
| import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; | import org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter; | ||||||
| import org.springframework.security.util.FieldUtils; | import org.springframework.security.util.FieldUtils; | ||||||
| import org.springframework.security.util.FilterChainProxy; | import org.springframework.security.web.util.FilterChainProxy; | ||||||
| import org.springframework.security.util.MockFilter; | import org.springframework.security.web.util.PortMapperImpl; | ||||||
| import org.springframework.security.util.PortMapperImpl; |  | ||||||
| import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | ||||||
| import org.springframework.util.ReflectionUtils; | import org.springframework.util.ReflectionUtils; | ||||||
| 
 | 
 | ||||||
| @ -341,20 +340,20 @@ public class HttpSecurityBeanDefinitionParserTests { | |||||||
|                 "<b:bean id='userFilter' class='org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter'>" + |                 "<b:bean id='userFilter' class='org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter'>" + | ||||||
|                 "    <custom-filter after='LOGOUT_FILTER'/>" + |                 "    <custom-filter after='LOGOUT_FILTER'/>" + | ||||||
|                 "</b:bean>" + |                 "</b:bean>" + | ||||||
|                 "<b:bean id='userFilter1' class='org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter'>" + |                 "<b:bean id='userFilter1' class='org.springframework.security.context.web.SecurityContextPersistenceFilter'>" + | ||||||
|                 "    <custom-filter before='SESSION_CONTEXT_INTEGRATION_FILTER'/>" + |                 "    <custom-filter before='SESSION_CONTEXT_INTEGRATION_FILTER'/>" + | ||||||
|                 "</b:bean>" + |                 "</b:bean>" + | ||||||
|                 "<b:bean id='userFilter2' class='org.springframework.security.util.MockFilter'>" + |                 "<b:bean id='userFilter2' class='org.springframework.security.context.web.SecurityContextPersistenceFilter'>" + | ||||||
|                 "    <custom-filter position='FIRST'/>" + |                 "    <custom-filter position='FIRST'/>" + | ||||||
|                 "</b:bean>" + |                 "</b:bean>" + | ||||||
|                 "<b:bean id='userFilter3' class='org.springframework.security.util.MockFilter'/>" + |                 "<b:bean id='userFilter3' class='org.springframework.security.context.web.SecurityContextPersistenceFilter'/>" + | ||||||
|                 "<b:bean id='userFilter4' class='org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter'/>" |                 "<b:bean id='userFilter4' class='org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter'/>" | ||||||
|                 ); |                 ); | ||||||
|         List<Filter> filters = getFilters("/someurl"); |         List<Filter> filters = getFilters("/someurl"); | ||||||
| 
 | 
 | ||||||
|         assertEquals(AUTO_CONFIG_FILTERS + 3, filters.size()); |         assertEquals(AUTO_CONFIG_FILTERS + 3, filters.size()); | ||||||
|         assertTrue(filters.get(0) instanceof MockFilter); |         assertTrue(filters.get(0) instanceof SecurityContextPersistenceFilter); | ||||||
|         assertTrue(filters.get(1) instanceof SecurityContextHolderAwareRequestFilter); |         assertTrue(filters.get(1) instanceof SecurityContextPersistenceFilter); | ||||||
|         assertTrue(filters.get(4) instanceof SecurityContextHolderAwareRequestFilter); |         assertTrue(filters.get(4) instanceof SecurityContextHolderAwareRequestFilter); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -694,7 +693,7 @@ public class HttpSecurityBeanDefinitionParserTests { | |||||||
|     @Test |     @Test | ||||||
|     public void supportsExternallyDefinedSecurityContextRepository() throws Exception { |     public void supportsExternallyDefinedSecurityContextRepository() throws Exception { | ||||||
|         setContext( |         setContext( | ||||||
|                 "<b:bean id='repo' class='org.springframework.security.context.HttpSessionSecurityContextRepository'/>" + |                 "<b:bean id='repo' class='org.springframework.security.context.web.HttpSessionSecurityContextRepository'/>" + | ||||||
|                 "<http create-session='always' security-context-repository-ref='repo'>" + |                 "<http create-session='always' security-context-repository-ref='repo'>" + | ||||||
|                 "    <http-basic />" + |                 "    <http-basic />" + | ||||||
|                 "</http>" + AUTH_PROVIDER_XML); |                 "</http>" + AUTH_PROVIDER_XML); | ||||||
| @ -707,7 +706,7 @@ public class HttpSecurityBeanDefinitionParserTests { | |||||||
|     @Test(expected=BeanDefinitionParsingException.class) |     @Test(expected=BeanDefinitionParsingException.class) | ||||||
|     public void cantUseUnsupportedSessionCreationAttributeWithExternallyDefinedSecurityContextRepository() throws Exception { |     public void cantUseUnsupportedSessionCreationAttributeWithExternallyDefinedSecurityContextRepository() throws Exception { | ||||||
|         setContext( |         setContext( | ||||||
|                 "<b:bean id='repo' class='org.springframework.security.context.HttpSessionSecurityContextRepository'/>" + |                 "<b:bean id='repo' class='org.springframework.security.context.web.HttpSessionSecurityContextRepository'/>" + | ||||||
|                 "<http create-session='never' security-context-repository-ref='repo'>" + |                 "<http create-session='never' security-context-repository-ref='repo'>" + | ||||||
|                 "    <http-basic />" + |                 "    <http-basic />" + | ||||||
|                 "</http>" + AUTH_PROVIDER_XML); |                 "</http>" + AUTH_PROVIDER_XML); | ||||||
|  | |||||||
| @ -16,10 +16,15 @@ | |||||||
| package org.springframework.security.util; | package org.springframework.security.util; | ||||||
| 
 | 
 | ||||||
| import static org.junit.Assert.*; | import static org.junit.Assert.*; | ||||||
|  | import static org.mockito.Mockito.*; | ||||||
|  | import static org.mockito.Matchers.*; | ||||||
| 
 | 
 | ||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.Filter; | import javax.servlet.Filter; | ||||||
|  | import javax.servlet.FilterChain; | ||||||
|  | import javax.servlet.http.HttpServletRequest; | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
| import org.junit.After; | import org.junit.After; | ||||||
| import org.junit.Before; | import org.junit.Before; | ||||||
| @ -29,8 +34,10 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; | |||||||
| import org.springframework.mock.web.MockHttpServletRequest; | import org.springframework.mock.web.MockHttpServletRequest; | ||||||
| import org.springframework.mock.web.MockHttpServletResponse; | import org.springframework.mock.web.MockHttpServletResponse; | ||||||
| import org.springframework.security.MockFilterConfig; | import org.springframework.security.MockFilterConfig; | ||||||
| import org.springframework.security.context.SecurityContextPersistenceFilter; | import org.springframework.security.context.web.SecurityContextPersistenceFilter; | ||||||
| import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; | import org.springframework.security.ui.webapp.AuthenticationProcessingFilter; | ||||||
|  | import org.springframework.security.web.util.FilterChainProxy; | ||||||
|  | import org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Tests {@link FilterChainProxy}. |  * Tests {@link FilterChainProxy}. | ||||||
| @ -56,23 +63,6 @@ public class FilterChainProxyConfigTests { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test |  | ||||||
|     public void testDoNotFilter() throws Exception { |  | ||||||
|         FilterChainProxy filterChainProxy = (FilterChainProxy) appCtx.getBean("filterChain", FilterChainProxy.class); |  | ||||||
|         MockFilter filter = (MockFilter) appCtx.getBean("mockFilter", MockFilter.class); |  | ||||||
| 
 |  | ||||||
|         MockHttpServletRequest request = new MockHttpServletRequest(); |  | ||||||
|         request.setServletPath("/do/not/filter/somefile.html"); |  | ||||||
| 
 |  | ||||||
|         MockHttpServletResponse response = new MockHttpServletResponse(); |  | ||||||
|         MockFilterChain chain = new MockFilterChain(true); |  | ||||||
| 
 |  | ||||||
|         filterChainProxy.doFilter(request, response, chain); |  | ||||||
|         assertFalse(filter.isWasInitialized()); |  | ||||||
|         assertFalse(filter.isWasDoFiltered()); |  | ||||||
|         assertFalse(filter.isWasDestroyed()); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Test(expected=BeanCreationException.class) |     @Test(expected=BeanCreationException.class) | ||||||
|     public void misplacedUniversalPathShouldBeDetected() throws Exception { |     public void misplacedUniversalPathShouldBeDetected() throws Exception { | ||||||
|         appCtx.getBean("newFilterChainProxyWrongPathOrder", FilterChainProxy.class); |         appCtx.getBean("newFilterChainProxyWrongPathOrder", FilterChainProxy.class); | ||||||
| @ -126,14 +116,14 @@ public class FilterChainProxyConfigTests { | |||||||
|     private void checkPathAndFilterOrder(FilterChainProxy filterChainProxy) throws Exception { |     private void checkPathAndFilterOrder(FilterChainProxy filterChainProxy) throws Exception { | ||||||
|         List<Filter> filters = filterChainProxy.getFilters("/foo/blah"); |         List<Filter> filters = filterChainProxy.getFilters("/foo/blah"); | ||||||
|         assertEquals(1, filters.size()); |         assertEquals(1, filters.size()); | ||||||
|         assertTrue(filters.get(0) instanceof MockFilter); |         assertTrue(filters.get(0) instanceof SecurityContextHolderAwareRequestFilter); | ||||||
| 
 | 
 | ||||||
|         filters = filterChainProxy.getFilters("/some/other/path/blah"); |         filters = filterChainProxy.getFilters("/some/other/path/blah"); | ||||||
|         assertNotNull(filters); |         assertNotNull(filters); | ||||||
|         assertEquals(3, filters.size()); |         assertEquals(3, filters.size()); | ||||||
|         assertTrue(filters.get(0) instanceof SecurityContextPersistenceFilter); |         assertTrue(filters.get(0) instanceof SecurityContextPersistenceFilter); | ||||||
|         assertTrue(filters.get(1) instanceof MockFilter); |         assertTrue(filters.get(1) instanceof SecurityContextHolderAwareRequestFilter); | ||||||
|         assertTrue(filters.get(2) instanceof MockFilter); |         assertTrue(filters.get(2) instanceof SecurityContextHolderAwareRequestFilter); | ||||||
| 
 | 
 | ||||||
|         filters = filterChainProxy.getFilters("/do/not/filter"); |         filters = filterChainProxy.getFilters("/do/not/filter"); | ||||||
|         assertEquals(0, filters.size()); |         assertEquals(0, filters.size()); | ||||||
| @ -142,37 +132,26 @@ public class FilterChainProxyConfigTests { | |||||||
|         assertEquals(3, filters.size()); |         assertEquals(3, filters.size()); | ||||||
|         assertTrue(filters.get(0) instanceof SecurityContextPersistenceFilter); |         assertTrue(filters.get(0) instanceof SecurityContextPersistenceFilter); | ||||||
|         assertTrue(filters.get(1) instanceof AuthenticationProcessingFilter); |         assertTrue(filters.get(1) instanceof AuthenticationProcessingFilter); | ||||||
|         assertTrue(filters.get(2) instanceof MockFilter); |         assertTrue(filters.get(2) instanceof SecurityContextHolderAwareRequestFilter); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private void doNormalOperation(FilterChainProxy filterChainProxy) throws Exception { |     private void doNormalOperation(FilterChainProxy filterChainProxy) throws Exception { | ||||||
|         MockFilter filter = (MockFilter) appCtx.getBean("mockFilter", MockFilter.class); |  | ||||||
|         assertFalse(filter.isWasInitialized()); |  | ||||||
|         assertFalse(filter.isWasDoFiltered()); |  | ||||||
|         assertFalse(filter.isWasDestroyed()); |  | ||||||
| 
 |  | ||||||
|         filterChainProxy.init(new MockFilterConfig()); |         filterChainProxy.init(new MockFilterConfig()); | ||||||
|         assertTrue(filter.isWasInitialized()); |  | ||||||
|         assertFalse(filter.isWasDoFiltered()); |  | ||||||
|         assertFalse(filter.isWasDestroyed()); |  | ||||||
| 
 | 
 | ||||||
|         MockHttpServletRequest request = new MockHttpServletRequest(); |         MockHttpServletRequest request = new MockHttpServletRequest(); | ||||||
|         request.setServletPath("/foo/secure/super/somefile.html"); |         request.setServletPath("/foo/secure/super/somefile.html"); | ||||||
| 
 | 
 | ||||||
|         MockHttpServletResponse response = new MockHttpServletResponse(); |         MockHttpServletResponse response = new MockHttpServletResponse(); | ||||||
|         MockFilterChain chain = new MockFilterChain(true); |         FilterChain chain = mock(FilterChain.class); | ||||||
| 
 | 
 | ||||||
|         filterChainProxy.doFilter(request, response, chain); |         filterChainProxy.doFilter(request, response, chain); | ||||||
|         assertTrue(filter.isWasInitialized()); |         verify(chain).doFilter(any(HttpServletRequest.class), any(HttpServletResponse.class)); | ||||||
|         assertTrue(filter.isWasDoFiltered()); |  | ||||||
|         assertFalse(filter.isWasDestroyed()); |  | ||||||
| 
 | 
 | ||||||
|         request.setServletPath("/a/path/which/doesnt/match/any/filter.html"); |         request.setServletPath("/a/path/which/doesnt/match/any/filter.html"); | ||||||
|  |         chain = mock(FilterChain.class); | ||||||
|         filterChainProxy.doFilter(request, response, chain); |         filterChainProxy.doFilter(request, response, chain); | ||||||
|  |         verify(chain).doFilter(any(HttpServletRequest.class), any(HttpServletResponse.class)); | ||||||
| 
 | 
 | ||||||
|         filterChainProxy.destroy(); |         filterChainProxy.destroy(); | ||||||
|         assertTrue(filter.isWasInitialized()); |  | ||||||
|         assertTrue(filter.isWasDoFiltered()); |  | ||||||
|         assertTrue(filter.isWasDestroyed()); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -24,12 +24,12 @@ | |||||||
|     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd | ||||||
| http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd"> | http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd"> | ||||||
| 
 | 
 | ||||||
|     <bean id="mockFilter" class="org.springframework.security.util.MockFilter"/> |     <bean id="mockFilter" class="org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter"/> | ||||||
| 
 | 
 | ||||||
|     <bean id="mockFilter2" class="org.springframework.security.util.MockFilter"/> |     <bean id="mockFilter2" class="org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter"/> | ||||||
| 
 | 
 | ||||||
|     <!-- These are just here so we have filters of a specific type to check the ordering is as expected --> |     <!-- These are just here so we have filters of a specific type to check the ordering is as expected --> | ||||||
|     <bean id="sif" class="org.springframework.security.context.SecurityContextPersistenceFilter"/> |     <bean id="sif" class="org.springframework.security.context.web.SecurityContextPersistenceFilter"/> | ||||||
| 
 | 
 | ||||||
|     <bean id="apf" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"> |     <bean id="apf" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"> | ||||||
|        <property name="authenticationManager"> |        <property name="authenticationManager"> | ||||||
| @ -39,7 +39,7 @@ http://www.springframework.org/schema/security http://www.springframework.org/sc | |||||||
| 
 | 
 | ||||||
|     <bean id="mockNotAFilter" class="org.springframework.security.util.MockNotAFilter"/> |     <bean id="mockNotAFilter" class="org.springframework.security.util.MockNotAFilter"/> | ||||||
| 
 | 
 | ||||||
|     <bean id="filterChain" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="filterChain" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="ant"> |         <sec:filter-chain-map path-type="ant"> | ||||||
|             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> |             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> | ||||||
|             <sec:filter-chain pattern="/some/other/path/**" filters="mockFilter"/> |             <sec:filter-chain pattern="/some/other/path/**" filters="mockFilter"/> | ||||||
| @ -48,7 +48,7 @@ http://www.springframework.org/schema/security http://www.springframework.org/sc | |||||||
|     </bean> |     </bean> | ||||||
| 
 | 
 | ||||||
| <!-- TODO: Refactor to replace the above (SEC-1034: 'new' is now the only valid syntax) --> | <!-- TODO: Refactor to replace the above (SEC-1034: 'new' is now the only valid syntax) --> | ||||||
|     <bean id="newFilterChainProxy" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="newFilterChainProxy" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="ant"> |         <sec:filter-chain-map path-type="ant"> | ||||||
|             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> |             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> | ||||||
|             <sec:filter-chain pattern="/some/other/path/**" filters="sif,mockFilter,mockFilter2"/> |             <sec:filter-chain pattern="/some/other/path/**" filters="sif,mockFilter,mockFilter2"/> | ||||||
| @ -57,14 +57,14 @@ http://www.springframework.org/schema/security http://www.springframework.org/sc | |||||||
|         </sec:filter-chain-map> |         </sec:filter-chain-map> | ||||||
|     </bean> |     </bean> | ||||||
| 
 | 
 | ||||||
|     <bean id="newFilterChainProxyNoDefaultPath" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="newFilterChainProxyNoDefaultPath" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="ant"> |         <sec:filter-chain-map path-type="ant"> | ||||||
|             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> |             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> | ||||||
|             <sec:filter-chain pattern="/*.bar" filters="mockFilter,mockFilter2"/> |             <sec:filter-chain pattern="/*.bar" filters="mockFilter,mockFilter2"/> | ||||||
|         </sec:filter-chain-map> |         </sec:filter-chain-map> | ||||||
|     </bean> |     </bean> | ||||||
| 
 | 
 | ||||||
|     <bean id="newFilterChainProxyWrongPathOrder" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="newFilterChainProxyWrongPathOrder" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="ant"> |         <sec:filter-chain-map path-type="ant"> | ||||||
|             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> |             <sec:filter-chain pattern="/foo/**" filters="mockFilter"/> | ||||||
|             <sec:filter-chain pattern="/**" filters="sif,apf,mockFilter"/> |             <sec:filter-chain pattern="/**" filters="sif,apf,mockFilter"/> | ||||||
| @ -72,7 +72,7 @@ http://www.springframework.org/schema/security http://www.springframework.org/sc | |||||||
|         </sec:filter-chain-map> |         </sec:filter-chain-map> | ||||||
|     </bean> |     </bean> | ||||||
| 
 | 
 | ||||||
|     <bean id="newFilterChainProxyRegex" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="newFilterChainProxyRegex" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="regex"> |         <sec:filter-chain-map path-type="regex"> | ||||||
|             <sec:filter-chain pattern="\A/foo/.*\Z" filters="mockFilter"/> |             <sec:filter-chain pattern="\A/foo/.*\Z" filters="mockFilter"/> | ||||||
|             <sec:filter-chain pattern="\A/s[oO]me/other/path/.*\Z" filters="sif,mockFilter,mockFilter2"/> |             <sec:filter-chain pattern="\A/s[oO]me/other/path/.*\Z" filters="sif,mockFilter,mockFilter2"/> | ||||||
| @ -81,7 +81,7 @@ http://www.springframework.org/schema/security http://www.springframework.org/sc | |||||||
|         </sec:filter-chain-map> |         </sec:filter-chain-map> | ||||||
|     </bean> |     </bean> | ||||||
| 
 | 
 | ||||||
|     <bean id="newFilterChainProxyNonNamespace" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="newFilterChainProxyNonNamespace" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <property name="matcher"> |         <property name="matcher"> | ||||||
|             <bean class="org.springframework.security.util.AntUrlPathMatcher"/> |             <bean class="org.springframework.security.util.AntUrlPathMatcher"/> | ||||||
|         </property> |         </property> | ||||||
|  | |||||||
| @ -61,7 +61,7 @@ | |||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>cglib</groupId> |             <groupId>cglib</groupId> | ||||||
|             <artifactId>cglib-nodep</artifactId> |             <artifactId>cglib-nodep</artifactId> | ||||||
|             <scope>test</scope> |             <scope>runtime</scope> | ||||||
|             <optional>true</optional> |             <optional>true</optional> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
| @ -86,16 +86,19 @@ | |||||||
|             <artifactId>hsqldb</artifactId> |             <artifactId>hsqldb</artifactId> | ||||||
|             <scope>test</scope> |             <scope>test</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|  | 
 | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>jaxen</groupId> |             <groupId>jaxen</groupId> | ||||||
|             <artifactId>jaxen</artifactId> |             <artifactId>jaxen</artifactId> | ||||||
|             <version>1.1.1</version> |             <version>1.1.1</version> | ||||||
|             <optional>true</optional> |             <optional>true</optional> | ||||||
|         </dependency> |         </dependency> | ||||||
|  | <!-- | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>javax.servlet</groupId> |             <groupId>javax.servlet</groupId> | ||||||
|             <artifactId>servlet-api</artifactId> |             <artifactId>servlet-api</artifactId> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |  --> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.apache.tomcat</groupId> |             <groupId>org.apache.tomcat</groupId> | ||||||
|             <artifactId>annotations-api</artifactId> |             <artifactId>annotations-api</artifactId> | ||||||
| @ -110,10 +113,6 @@ | |||||||
|             <optional>true</optional> |             <optional>true</optional> | ||||||
|         </dependency> |         </dependency> | ||||||
|  --> |  --> | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.jmock</groupId> |  | ||||||
|             <artifactId>jmock-junit4</artifactId> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>log4j</groupId> |             <groupId>log4j</groupId> | ||||||
|             <artifactId>log4j</artifactId> |             <artifactId>log4j</artifactId> | ||||||
|  | |||||||
| @ -23,12 +23,14 @@ import java.io.Serializable; | |||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Represents a record of a session within the Spring Security framework. |  * Represents a record of a session within the Spring Security framework. | ||||||
|  * <p>This is primarily used for concurrent session support.</p> |  * <p> | ||||||
|  * <p>Sessions have three states: active, expired, and destroyed. A session can that is invalidated by |  * This is primarily used for concurrent session support. | ||||||
|  |  * <p> | ||||||
|  |  * Sessions have three states: active, expired, and destroyed. A session can that is invalidated by | ||||||
|  * <code>session.invalidate()</code> or via Servlet Container management is considered "destroyed". An "expired" |  * <code>session.invalidate()</code> or via Servlet Container management is considered "destroyed". An "expired" | ||||||
|  * session, on the other hand, is a session that Spring Security wants to end because it was selected for removal for |  * session, on the other hand, is a session that Spring Security wants to end because it was selected for removal for | ||||||
|  * some reason (generally as it was the least recently used session and the maximum sessions for the user were |  * some reason (generally as it was the least recently used session and the maximum sessions for the user were | ||||||
|  * reached). An "expired" session is removed as soon as possible by a <code>Filter</code>.</p> |  * reached). An "expired" session is removed as soon as possible by a <code>Filter</code>. | ||||||
|  * |  * | ||||||
|  * @author Ben Alex |  * @author Ben Alex | ||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  | |||||||
| @ -26,7 +26,7 @@ import org.springframework.util.Assert; | |||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  * |  * | ||||||
|  * @see java.lang.ThreadLocal |  * @see java.lang.ThreadLocal | ||||||
|  * @see org.springframework.security.context.SecurityContextPersistenceFilter |  * @see org.springframework.security.context.web.SecurityContextPersistenceFilter | ||||||
|  */ |  */ | ||||||
| public class InheritableThreadLocalSecurityContextHolderStrategy implements SecurityContextHolderStrategy { | public class InheritableThreadLocalSecurityContextHolderStrategy implements SecurityContextHolderStrategy { | ||||||
|     //~ Static fields/initializers ===================================================================================== |     //~ Static fields/initializers ===================================================================================== | ||||||
|  | |||||||
| @ -43,7 +43,7 @@ import java.lang.reflect.Constructor; | |||||||
|  * @author Ben Alex |  * @author Ben Alex | ||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  * |  * | ||||||
|  * @see org.springframework.security.context.HttpSessionContextIntegrationFilter |  * @see org.springframework.security.context.web.HttpSessionContextIntegrationFilter | ||||||
|  */ |  */ | ||||||
| public class SecurityContextHolder { | public class SecurityContextHolder { | ||||||
|     //~ Static fields/initializers ===================================================================================== |     //~ Static fields/initializers ===================================================================================== | ||||||
| @ -138,7 +138,7 @@ public class SecurityContextHolder { | |||||||
|     /** |     /** | ||||||
|      * Delegates the creation of a new, empty context to the configured strategy. |      * Delegates the creation of a new, empty context to the configured strategy. | ||||||
|      */ |      */ | ||||||
|     static SecurityContext createEmptyContext() { |     public static SecurityContext createEmptyContext() { | ||||||
|         return strategy.createEmptyContext(); |         return strategy.createEmptyContext(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ import org.springframework.util.Assert; | |||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  * |  * | ||||||
|  * @see java.lang.ThreadLocal |  * @see java.lang.ThreadLocal | ||||||
|  * @see org.springframework.security.context.SecurityContextPersistenceFilter |  * @see org.springframework.security.context.web.SecurityContextPersistenceFilter | ||||||
|  */ |  */ | ||||||
| public class ThreadLocalSecurityContextHolderStrategy implements SecurityContextHolderStrategy { | public class ThreadLocalSecurityContextHolderStrategy implements SecurityContextHolderStrategy { | ||||||
|     //~ Static fields/initializers ===================================================================================== |     //~ Static fields/initializers ===================================================================================== | ||||||
|  | |||||||
| @ -1,8 +1,7 @@ | |||||||
| <html> | <html> | ||||||
| <body> | <body> | ||||||
| Classes related to the establishment of a security context for the duration of a request (such as | Classes related to the establishment of a security context for the duration of a request (such as | ||||||
| an HTTP or RMI invocation) and for the maintenance of the context between requests (by storing it in an HTTP sessio, for | an HTTP or RMI invocation). | ||||||
| example). |  | ||||||
| <p> | <p> | ||||||
| A security context is associated with the current execution thread for the duration of the request, making the | A security context is associated with the current execution thread for the duration of the request, making the | ||||||
| authentication information it contains available throughout all the layers of an application. | authentication information it contains available throughout all the layers of an application. | ||||||
|  | |||||||
| @ -0,0 +1,18 @@ | |||||||
|  | package org.springframework.security.event; | ||||||
|  | 
 | ||||||
|  | import org.springframework.context.ApplicationEvent; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Generic session creation event which indicates that a session (potentially | ||||||
|  |  * represented by a security context) has begun. | ||||||
|  |  * | ||||||
|  |  * @author Luke Taylor | ||||||
|  |  * @version $Id$ | ||||||
|  |  * @since 2.5 | ||||||
|  |  */ | ||||||
|  | public abstract class SessionCreationEvent extends ApplicationEvent { | ||||||
|  | 
 | ||||||
|  |     public SessionCreationEvent(Object source) { | ||||||
|  |         super(source); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,26 @@ | |||||||
|  | package org.springframework.security.event; | ||||||
|  | 
 | ||||||
|  | import org.springframework.context.ApplicationEvent; | ||||||
|  | import org.springframework.security.context.SecurityContext; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Generic "session termination" event which indicates that a session (potentially | ||||||
|  |  * represented by a security context) has ended. | ||||||
|  |  * | ||||||
|  |  * @author Luke Taylor | ||||||
|  |  * @version $Id$ | ||||||
|  |  * @since 2.5 | ||||||
|  |  */ | ||||||
|  | public abstract class SessionDestroyedEvent extends ApplicationEvent { | ||||||
|  | 
 | ||||||
|  |     public SessionDestroyedEvent(Object source) { | ||||||
|  |         super(source); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Provides the <tt>SecurityContext</tt> under which the session was running. | ||||||
|  |      * | ||||||
|  |      * @return the <tt>SecurityContext</tt> associated with the session, or null if there is no context. | ||||||
|  |      */ | ||||||
|  |     public abstract SecurityContext getSecurityContext(); | ||||||
|  | } | ||||||
| @ -5,17 +5,16 @@ import org.springframework.expression.EvaluationContext; | |||||||
| import org.springframework.expression.Expression; | import org.springframework.expression.Expression; | ||||||
| import org.springframework.expression.ExpressionParser; | import org.springframework.expression.ExpressionParser; | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.intercept.web.FilterInvocation; |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Facade which isolates Spring Security's requirements from the implementation of the underlying |  * Facade which isolates Spring Security's requirements for evaluation method-security expressions | ||||||
|  * expression objects. |  * from the implementation of the underlying expression objects. | ||||||
|  * |  * | ||||||
|  * @author Luke Taylor |  * @author Luke Taylor | ||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| public interface SecurityExpressionHandler { | public interface MethodSecurityExpressionHandler { | ||||||
|     /** |     /** | ||||||
|      * @return an expression parser for the expressions used by the implementation. |      * @return an expression parser for the expressions used by the implementation. | ||||||
|      */ |      */ | ||||||
| @ -26,11 +25,6 @@ public interface SecurityExpressionHandler { | |||||||
|      */ |      */ | ||||||
|     EvaluationContext createEvaluationContext(Authentication authentication, MethodInvocation mi); |     EvaluationContext createEvaluationContext(Authentication authentication, MethodInvocation mi); | ||||||
| 
 | 
 | ||||||
|     /** |  | ||||||
|      * Provides an evaluation context in which to evaluate security expressions for a web invocation. |  | ||||||
|      */ |  | ||||||
|     EvaluationContext createEvaluationContext(Authentication authentication, FilterInvocation fi); |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Filters a target collection or array. |      * Filters a target collection or array. | ||||||
|      * Only applies to method invocations. |      * Only applies to method invocations. | ||||||
| @ -12,7 +12,7 @@ import org.springframework.expression.ExpressionParser; | |||||||
| import org.springframework.expression.ParseException; | import org.springframework.expression.ParseException; | ||||||
| import org.springframework.expression.spel.antlr.SpelAntlrExpressionParser; | import org.springframework.expression.spel.antlr.SpelAntlrExpressionParser; | ||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.expression.SecurityExpressionHandler; | import org.springframework.security.expression.MethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.expression.annotation.PostAuthorize; | import org.springframework.security.expression.annotation.PostAuthorize; | ||||||
| import org.springframework.security.expression.annotation.PostFilter; | import org.springframework.security.expression.annotation.PostFilter; | ||||||
| import org.springframework.security.expression.annotation.PreAuthorize; | import org.springframework.security.expression.annotation.PreAuthorize; | ||||||
| @ -45,10 +45,10 @@ public class ExpressionAnnotationMethodSecurityMetadataSource extends AbstractMe | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * Constructor which obtains the expression parser from the {@link SecurityExpressionHandler#getExpressionParser() } |      * Constructor which obtains the expression parser from the {@link MethodSecurityExpressionHandler#getExpressionParser() } | ||||||
|      * method on the supplied <tt>SecurityExpressionHandler</tt>. |      * method on the supplied <tt>SecurityExpressionHandler</tt>. | ||||||
|      */ |      */ | ||||||
|     public ExpressionAnnotationMethodSecurityMetadataSource(SecurityExpressionHandler handler) { |     public ExpressionAnnotationMethodSecurityMetadataSource(MethodSecurityExpressionHandler handler) { | ||||||
|         parser = handler.getExpressionParser(); |         parser = handler.getExpressionParser(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -12,8 +12,8 @@ import org.springframework.security.Authentication; | |||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.afterinvocation.AfterInvocationProvider; | import org.springframework.security.afterinvocation.AfterInvocationProvider; | ||||||
| import org.springframework.security.expression.ExpressionUtils; | import org.springframework.security.expression.ExpressionUtils; | ||||||
| import org.springframework.security.expression.SecurityExpressionHandler; | import org.springframework.security.expression.MethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.expression.support.DefaultSecurityExpressionHandler; | import org.springframework.security.expression.support.DefaultMethodSecurityExpressionHandler; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * AfterInvocationProvider which handles the @PostAuthorize and @PostFilter annotation expressions. |  * AfterInvocationProvider which handles the @PostAuthorize and @PostFilter annotation expressions. | ||||||
| @ -26,7 +26,7 @@ public class MethodExpressionAfterInvocationProvider implements AfterInvocationP | |||||||
| 
 | 
 | ||||||
|     protected final Log logger = LogFactory.getLog(getClass()); |     protected final Log logger = LogFactory.getLog(getClass()); | ||||||
| 
 | 
 | ||||||
|     private SecurityExpressionHandler expressionHandler = new DefaultSecurityExpressionHandler(); |     private MethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler(); | ||||||
| 
 | 
 | ||||||
|     public Object decide(Authentication authentication, Object object, List<ConfigAttribute> config, Object returnedObject) |     public Object decide(Authentication authentication, Object object, List<ConfigAttribute> config, Object returnedObject) | ||||||
|             throws AccessDeniedException { |             throws AccessDeniedException { | ||||||
| @ -90,7 +90,7 @@ public class MethodExpressionAfterInvocationProvider implements AfterInvocationP | |||||||
|         return clazz.isAssignableFrom(MethodInvocation.class); |         return clazz.isAssignableFrom(MethodInvocation.class); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setExpressionHandler(SecurityExpressionHandler expressionHandler) { |     public void setExpressionHandler(MethodSecurityExpressionHandler expressionHandler) { | ||||||
|         this.expressionHandler = expressionHandler; |         this.expressionHandler = expressionHandler; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -11,8 +11,8 @@ import org.springframework.expression.Expression; | |||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.expression.ExpressionUtils; | import org.springframework.security.expression.ExpressionUtils; | ||||||
| import org.springframework.security.expression.SecurityExpressionHandler; | import org.springframework.security.expression.MethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.expression.support.DefaultSecurityExpressionHandler; | import org.springframework.security.expression.support.DefaultMethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.vote.AccessDecisionVoter; | import org.springframework.security.vote.AccessDecisionVoter; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -29,7 +29,7 @@ import org.springframework.security.vote.AccessDecisionVoter; | |||||||
| public class MethodExpressionVoter implements AccessDecisionVoter { | public class MethodExpressionVoter implements AccessDecisionVoter { | ||||||
|     protected final Log logger = LogFactory.getLog(getClass()); |     protected final Log logger = LogFactory.getLog(getClass()); | ||||||
| 
 | 
 | ||||||
|     private SecurityExpressionHandler expressionHandler = new DefaultSecurityExpressionHandler(); |     private MethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler(); | ||||||
| 
 | 
 | ||||||
|     public boolean supports(ConfigAttribute attribute) { |     public boolean supports(ConfigAttribute attribute) { | ||||||
|         return attribute instanceof AbstractExpressionBasedMethodConfigAttribute; |         return attribute instanceof AbstractExpressionBasedMethodConfigAttribute; | ||||||
| @ -105,7 +105,7 @@ public class MethodExpressionVoter implements AccessDecisionVoter { | |||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setExpressionHandler(SecurityExpressionHandler expressionHandler) { |     public void setExpressionHandler(MethodSecurityExpressionHandler expressionHandler) { | ||||||
|         this.expressionHandler = expressionHandler; |         this.expressionHandler = expressionHandler; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,14 +14,12 @@ import org.springframework.expression.EvaluationContext; | |||||||
| import org.springframework.expression.Expression; | import org.springframework.expression.Expression; | ||||||
| import org.springframework.expression.ExpressionParser; | import org.springframework.expression.ExpressionParser; | ||||||
| import org.springframework.expression.spel.antlr.SpelAntlrExpressionParser; | import org.springframework.expression.spel.antlr.SpelAntlrExpressionParser; | ||||||
| import org.springframework.expression.spel.support.StandardEvaluationContext; |  | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.AuthenticationTrustResolver; | import org.springframework.security.AuthenticationTrustResolver; | ||||||
| import org.springframework.security.AuthenticationTrustResolverImpl; | import org.springframework.security.AuthenticationTrustResolverImpl; | ||||||
| import org.springframework.security.expression.ExpressionUtils; | import org.springframework.security.expression.ExpressionUtils; | ||||||
| import org.springframework.security.expression.PermissionEvaluator; | import org.springframework.security.expression.PermissionEvaluator; | ||||||
| import org.springframework.security.expression.SecurityExpressionHandler; | import org.springframework.security.expression.MethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.intercept.web.FilterInvocation; |  | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * The standard implementation of <tt>SecurityExpressionHandler</tt>. |  * The standard implementation of <tt>SecurityExpressionHandler</tt>. | ||||||
| @ -32,7 +30,7 @@ import org.springframework.security.intercept.web.FilterInvocation; | |||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| public class DefaultSecurityExpressionHandler implements SecurityExpressionHandler { | public class DefaultMethodSecurityExpressionHandler implements MethodSecurityExpressionHandler { | ||||||
| 
 | 
 | ||||||
|     protected final Log logger = LogFactory.getLog(getClass()); |     protected final Log logger = LogFactory.getLog(getClass()); | ||||||
| 
 | 
 | ||||||
| @ -41,7 +39,7 @@ public class DefaultSecurityExpressionHandler implements SecurityExpressionHandl | |||||||
|     private AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl(); |     private AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl(); | ||||||
|     private ExpressionParser expressionParser = new SpelAntlrExpressionParser(); |     private ExpressionParser expressionParser = new SpelAntlrExpressionParser(); | ||||||
| 
 | 
 | ||||||
|     public DefaultSecurityExpressionHandler() { |     public DefaultMethodSecurityExpressionHandler() { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -58,15 +56,6 @@ public class DefaultSecurityExpressionHandler implements SecurityExpressionHandl | |||||||
|         return ctx; |         return ctx; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public EvaluationContext createEvaluationContext(Authentication authentication, FilterInvocation fi) { |  | ||||||
|         StandardEvaluationContext ctx = new StandardEvaluationContext(); |  | ||||||
|         SecurityExpressionRoot root = new WebSecurityExpressionRoot(authentication, fi); |  | ||||||
|         root.setTrustResolver(trustResolver); |  | ||||||
|         ctx.setRootObject(root); |  | ||||||
| 
 |  | ||||||
|         return ctx; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @SuppressWarnings("unchecked") |     @SuppressWarnings("unchecked") | ||||||
|     public Object filter(Object filterTarget, Expression filterExpression, EvaluationContext ctx) { |     public Object filter(Object filterTarget, Expression filterExpression, EvaluationContext ctx) { | ||||||
|         MethodSecurityExpressionRoot rootObject = (MethodSecurityExpressionRoot) ctx.getRootObject(); |         MethodSecurityExpressionRoot rootObject = (MethodSecurityExpressionRoot) ctx.getRootObject(); | ||||||
| @ -15,7 +15,7 @@ import org.springframework.security.util.AuthorityUtils; | |||||||
|  * @version $Id$ |  * @version $Id$ | ||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| abstract class SecurityExpressionRoot { | public abstract class SecurityExpressionRoot { | ||||||
|     protected final Authentication authentication; |     protected final Authentication authentication; | ||||||
|     private AuthenticationTrustResolver trustResolver; |     private AuthenticationTrustResolver trustResolver; | ||||||
|     /** Allows "permitAll" expression */ |     /** Allows "permitAll" expression */ | ||||||
| @ -24,7 +24,7 @@ abstract class SecurityExpressionRoot { | |||||||
|     /** Allows "denyAll" expression */ |     /** Allows "denyAll" expression */ | ||||||
|     public final boolean denyAll = false; |     public final boolean denyAll = false; | ||||||
| 
 | 
 | ||||||
|     SecurityExpressionRoot(Authentication a) { |     public SecurityExpressionRoot(Authentication a) { | ||||||
|         if (a == null) { |         if (a == null) { | ||||||
|             throw new IllegalArgumentException("Authentication object cannot be null"); |             throw new IllegalArgumentException("Authentication object cannot be null"); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -41,13 +41,12 @@ import org.springframework.security.Authentication; | |||||||
| import org.springframework.security.AuthenticationException; | import org.springframework.security.AuthenticationException; | ||||||
| import org.springframework.security.GrantedAuthority; | import org.springframework.security.GrantedAuthority; | ||||||
| import org.springframework.security.SpringSecurityException; | import org.springframework.security.SpringSecurityException; | ||||||
| import org.springframework.security.context.HttpSessionSecurityContextRepository; |  | ||||||
| import org.springframework.security.context.SecurityContext; | import org.springframework.security.context.SecurityContext; | ||||||
|  | import org.springframework.security.event.SessionDestroyedEvent; | ||||||
| import org.springframework.security.providers.AuthenticationProvider; | import org.springframework.security.providers.AuthenticationProvider; | ||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
| import org.springframework.security.providers.jaas.event.JaasAuthenticationFailedEvent; | import org.springframework.security.providers.jaas.event.JaasAuthenticationFailedEvent; | ||||||
| import org.springframework.security.providers.jaas.event.JaasAuthenticationSuccessEvent; | import org.springframework.security.providers.jaas.event.JaasAuthenticationSuccessEvent; | ||||||
| import org.springframework.security.ui.session.HttpSessionDestroyedEvent; |  | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -311,9 +310,8 @@ public class JaasAuthenticationProvider implements AuthenticationProvider, Appli | |||||||
|      * |      * | ||||||
|      * @param event |      * @param event | ||||||
|      */ |      */ | ||||||
|     protected void handleLogout(HttpSessionDestroyedEvent event) { |     protected void handleLogout(SessionDestroyedEvent event) { | ||||||
|         SecurityContext context = (SecurityContext) |         SecurityContext context = event.getSecurityContext(); | ||||||
|                 event.getSession().getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY); |  | ||||||
| 
 | 
 | ||||||
|         if (context == null) { |         if (context == null) { | ||||||
|             log.debug("The destroyed session has no SecurityContext"); |             log.debug("The destroyed session has no SecurityContext"); | ||||||
| @ -343,8 +341,8 @@ public class JaasAuthenticationProvider implements AuthenticationProvider, Appli | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void onApplicationEvent(ApplicationEvent applicationEvent) { |     public void onApplicationEvent(ApplicationEvent applicationEvent) { | ||||||
|         if (applicationEvent instanceof HttpSessionDestroyedEvent) { |         if (applicationEvent instanceof SessionDestroyedEvent) { | ||||||
|             HttpSessionDestroyedEvent event = (HttpSessionDestroyedEvent) applicationEvent; |             SessionDestroyedEvent event = (SessionDestroyedEvent) applicationEvent; | ||||||
|             handleLogout(event); |             handleLogout(event); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ import org.springframework.util.Assert; | |||||||
|  * |  * | ||||||
|  * <p> |  * <p> | ||||||
|  * This authentication provider will not perform any checks on authentication |  * This authentication provider will not perform any checks on authentication | ||||||
|  * requests, as they should already be pre- authenticated. However, the |  * requests, as they should already be pre-authenticated. However, the | ||||||
|  * AuthenticationUserDetailsService implementation may still throw a UsernameNotFoundException, for example. |  * AuthenticationUserDetailsService implementation may still throw a UsernameNotFoundException, for example. | ||||||
|  * |  * | ||||||
|  * @author Ruud Senden |  * @author Ruud Senden | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.springframework.security.context.httpinvoker; | package org.springframework.security.remoting.httpinvoker; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.AuthenticationCredentialsNotFoundException; | import org.springframework.security.AuthenticationCredentialsNotFoundException; | ||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.springframework.security.context.rmi; | package org.springframework.security.remoting.rmi; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.context.SecurityContext; | import org.springframework.security.context.SecurityContext; | ||||||
| import org.springframework.security.context.SecurityContextHolder; | import org.springframework.security.context.SecurityContextHolder; | ||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.springframework.security.context.rmi; | package org.springframework.security.remoting.rmi; | ||||||
| 
 | 
 | ||||||
| import org.aopalliance.intercept.MethodInvocation; | import org.aopalliance.intercept.MethodInvocation; | ||||||
| 
 | 
 | ||||||
| @ -1,50 +0,0 @@ | |||||||
| /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited |  | ||||||
|  * |  | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
|  * you may not use this file except in compliance with the License. |  | ||||||
|  * You may obtain a copy of the License at |  | ||||||
|  * |  | ||||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  * |  | ||||||
|  * Unless required by applicable law or agreed to in writing, software |  | ||||||
|  * distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
|  * See the License for the specific language governing permissions and |  | ||||||
|  * limitations under the License. |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| package org.springframework.security.ui.session; |  | ||||||
| 
 |  | ||||||
| import org.springframework.context.ApplicationEvent; |  | ||||||
| 
 |  | ||||||
| import javax.servlet.http.HttpSession; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * Parent class for published HttpSession events |  | ||||||
|  * |  | ||||||
|  * @author Ray Krueger |  | ||||||
|  */ |  | ||||||
| public abstract class HttpSessionApplicationEvent extends ApplicationEvent { |  | ||||||
|     //~ Constructors =================================================================================================== |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|      * Base constructor for all subclasses must have an HttpSession |  | ||||||
|      * |  | ||||||
|      * @param httpSession The session to carry as the event source. |  | ||||||
|      */ |  | ||||||
|     public HttpSessionApplicationEvent(HttpSession httpSession) { |  | ||||||
|         super(httpSession); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     //~ Methods ======================================================================================================== |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Get the HttpSession that is the cause of the event |  | ||||||
|      * |  | ||||||
|      * @return HttpSession instance |  | ||||||
|      */ |  | ||||||
|     public HttpSession getSession() { |  | ||||||
|         return (HttpSession) getSource(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -25,7 +25,6 @@ import org.springframework.security.AccessDeniedException; | |||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.SecurityConfig; | import org.springframework.security.SecurityConfig; | ||||||
| import org.springframework.security.intercept.web.FilterInvocation; |  | ||||||
| import org.springframework.security.util.SimpleMethodInvocation; | import org.springframework.security.util.SimpleMethodInvocation; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -129,7 +128,7 @@ public class AfterInvocationProviderManagerTests extends TestCase { | |||||||
|         manager.setProviders(list); |         manager.setProviders(list); | ||||||
|         manager.afterPropertiesSet(); |         manager.afterPropertiesSet(); | ||||||
| 
 | 
 | ||||||
|         assertFalse(manager.supports(FilterInvocation.class)); | //        assertFalse(manager.supports(FilterInvocation.class)); | ||||||
|         assertTrue(manager.supports(MethodInvocation.class)); |         assertTrue(manager.supports(MethodInvocation.class)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -15,10 +15,8 @@ | |||||||
| 
 | 
 | ||||||
| package org.springframework.security.providers; | package org.springframework.security.providers; | ||||||
| 
 | 
 | ||||||
| import static org.junit.Assert.assertEquals; | import static org.junit.Assert.*; | ||||||
| import static org.junit.Assert.assertNotNull; | import static org.mockito.Mockito.mock; | ||||||
| import static org.junit.Assert.assertTrue; |  | ||||||
| import static org.junit.Assert.fail; |  | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| @ -32,7 +30,7 @@ import org.springframework.security.AuthenticationServiceException; | |||||||
| import org.springframework.security.GrantedAuthority; | import org.springframework.security.GrantedAuthority; | ||||||
| import org.springframework.security.MockApplicationEventPublisher; | import org.springframework.security.MockApplicationEventPublisher; | ||||||
| import org.springframework.security.concurrent.ConcurrentLoginException; | import org.springframework.security.concurrent.ConcurrentLoginException; | ||||||
| import org.springframework.security.concurrent.ConcurrentSessionControllerImpl; | import org.springframework.security.concurrent.ConcurrentSessionController; | ||||||
| import org.springframework.security.concurrent.NullConcurrentSessionController; | import org.springframework.security.concurrent.NullConcurrentSessionController; | ||||||
| import org.springframework.security.util.AuthorityUtils; | import org.springframework.security.util.AuthorityUtils; | ||||||
| 
 | 
 | ||||||
| @ -102,9 +100,9 @@ public class ProviderManagerTests { | |||||||
|         assertNotNull(target.getSessionController()); |         assertNotNull(target.getSessionController()); | ||||||
|         assertTrue(target.getSessionController() instanceof NullConcurrentSessionController); |         assertTrue(target.getSessionController() instanceof NullConcurrentSessionController); | ||||||
| 
 | 
 | ||||||
|         ConcurrentSessionControllerImpl impl = new ConcurrentSessionControllerImpl(); |         ConcurrentSessionController csc = mock(ConcurrentSessionController.class); | ||||||
|         target.setSessionController(impl); |         target.setSessionController(csc); | ||||||
|         assertEquals(impl, target.getSessionController()); |         assertEquals(csc, target.getSessionController()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test(expected=IllegalArgumentException.class) |     @Test(expected=IllegalArgumentException.class) | ||||||
|  | |||||||
| @ -15,6 +15,8 @@ | |||||||
| 
 | 
 | ||||||
| package org.springframework.security.providers.jaas; | package org.springframework.security.providers.jaas; | ||||||
| 
 | 
 | ||||||
|  | import static org.mockito.Mockito.*; | ||||||
|  | 
 | ||||||
| import java.net.URL; | import java.net.URL; | ||||||
| import java.security.Security; | import java.security.Security; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -26,18 +28,16 @@ import junit.framework.TestCase; | |||||||
| 
 | 
 | ||||||
| import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||||
| import org.springframework.context.support.ClassPathXmlApplicationContext; | import org.springframework.context.support.ClassPathXmlApplicationContext; | ||||||
| import org.springframework.mock.web.MockHttpSession; |  | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.AuthenticationException; | import org.springframework.security.AuthenticationException; | ||||||
| import org.springframework.security.GrantedAuthority; | import org.springframework.security.GrantedAuthority; | ||||||
| import org.springframework.security.GrantedAuthorityImpl; | import org.springframework.security.GrantedAuthorityImpl; | ||||||
| import org.springframework.security.LockedException; | import org.springframework.security.LockedException; | ||||||
| import org.springframework.security.SpringSecurityException; | import org.springframework.security.SpringSecurityException; | ||||||
| import org.springframework.security.context.HttpSessionSecurityContextRepository; |  | ||||||
| import org.springframework.security.context.SecurityContextImpl; | import org.springframework.security.context.SecurityContextImpl; | ||||||
|  | import org.springframework.security.event.SessionDestroyedEvent; | ||||||
| import org.springframework.security.providers.TestingAuthenticationToken; | import org.springframework.security.providers.TestingAuthenticationToken; | ||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
| import org.springframework.security.ui.session.HttpSessionDestroyedEvent; |  | ||||||
| import org.springframework.security.util.AuthorityUtils; | import org.springframework.security.util.AuthorityUtils; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -204,10 +204,10 @@ public class JaasAuthenticationProviderTests extends TestCase { | |||||||
|         SecurityContextImpl context = new SecurityContextImpl(); |         SecurityContextImpl context = new SecurityContextImpl(); | ||||||
|         context.setAuthentication(token); |         context.setAuthentication(token); | ||||||
| 
 | 
 | ||||||
|         MockHttpSession mockSession = new MockHttpSession(); |         SessionDestroyedEvent event = mock(SessionDestroyedEvent.class); | ||||||
|         mockSession.setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, context); |         when(event.getSecurityContext()).thenReturn(context); | ||||||
| 
 | 
 | ||||||
|         jaasProvider.onApplicationEvent(new HttpSessionDestroyedEvent(mockSession)); |         jaasProvider.handleLogout(event); | ||||||
| 
 | 
 | ||||||
|         assertTrue(loginContext.loggedOut); |         assertTrue(loginContext.loggedOut); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -13,16 +13,16 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.springframework.security.context.httpinvoker; | package org.springframework.security.remoting.httpinvoker; | ||||||
| 
 | 
 | ||||||
| import junit.framework.TestCase; | import junit.framework.TestCase; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.context.SecurityContextHolder; | import org.springframework.security.context.SecurityContextHolder; | ||||||
| import org.springframework.security.context.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor; |  | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
|  | import org.springframework.security.remoting.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| 
 | 
 | ||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.springframework.security.context.rmi; | package org.springframework.security.remoting.rmi; | ||||||
| 
 | 
 | ||||||
| import junit.framework.TestCase; | import junit.framework.TestCase; | ||||||
| 
 | 
 | ||||||
| @ -23,6 +23,8 @@ import org.springframework.security.TargetObject; | |||||||
| import org.springframework.security.context.SecurityContextHolder; | import org.springframework.security.context.SecurityContextHolder; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
|  | import org.springframework.security.remoting.rmi.ContextPropagatingRemoteInvocation; | ||||||
|  | import org.springframework.security.remoting.rmi.ContextPropagatingRemoteInvocationFactory; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.util.SimpleMethodInvocation; | import org.springframework.security.util.SimpleMethodInvocation; | ||||||
| 
 | 
 | ||||||
| @ -1,56 +0,0 @@ | |||||||
| /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited |  | ||||||
|  * |  | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
|  * you may not use this file except in compliance with the License. |  | ||||||
|  * You may obtain a copy of the License at |  | ||||||
|  * |  | ||||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  * |  | ||||||
|  * Unless required by applicable law or agreed to in writing, software |  | ||||||
|  * distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
|  * See the License for the specific language governing permissions and |  | ||||||
|  * limitations under the License. |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| package org.springframework.security.util; |  | ||||||
| 
 |  | ||||||
| import java.io.IOException; |  | ||||||
| 
 |  | ||||||
| import javax.servlet.FilterChain; |  | ||||||
| import javax.servlet.ServletException; |  | ||||||
| import javax.servlet.ServletRequest; |  | ||||||
| import javax.servlet.ServletResponse; |  | ||||||
| 
 |  | ||||||
| import org.junit.Assert; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * A mock <code>FilterChain</code>. |  | ||||||
|  * |  | ||||||
|  * @author Ben Alex |  | ||||||
|  * @version $Id$ |  | ||||||
|  */ |  | ||||||
| public class MockFilterChain implements FilterChain { |  | ||||||
|     //~ Instance fields ================================================================================================ |  | ||||||
| 
 |  | ||||||
|     private boolean expectToProceed; |  | ||||||
| 
 |  | ||||||
|     //~ Constructors =================================================================================================== |  | ||||||
| 
 |  | ||||||
|     public MockFilterChain() { |  | ||||||
|         this(true); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public MockFilterChain(boolean expectToProceed) { |  | ||||||
|         this.expectToProceed = expectToProceed; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     //~ Methods ======================================================================================================== |  | ||||||
| 
 |  | ||||||
|     public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { |  | ||||||
|         if (!expectToProceed) { |  | ||||||
|             Assert.fail("Did not expect filter chain to proceed"); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -18,10 +18,10 @@ import org.springframework.mock.web.MockHttpServletResponse; | |||||||
| import org.springframework.mock.web.MockHttpSession; | import org.springframework.mock.web.MockHttpSession; | ||||||
| import org.springframework.security.GrantedAuthority; | import org.springframework.security.GrantedAuthority; | ||||||
| import org.springframework.security.GrantedAuthorityImpl; | import org.springframework.security.GrantedAuthorityImpl; | ||||||
| import org.springframework.security.context.HttpSessionSecurityContextRepository; |  | ||||||
| import org.springframework.security.context.SecurityContextHolder; | import org.springframework.security.context.SecurityContextHolder; | ||||||
|  | import org.springframework.security.context.web.HttpSessionSecurityContextRepository; | ||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
| import org.springframework.security.util.FilterChainProxy; | import org.springframework.security.web.util.FilterChainProxy; | ||||||
| import org.springframework.test.context.ContextConfiguration; | import org.springframework.test.context.ContextConfiguration; | ||||||
| import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; | ||||||
| import org.springframework.util.StopWatch; | import org.springframework.util.StopWatch; | ||||||
|  | |||||||
| @ -11,13 +11,13 @@ | |||||||
|     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd |     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd | ||||||
|                         http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> |                         http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> | ||||||
| 
 | 
 | ||||||
|     <bean id="fcpMinimalStack" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="fcpMinimalStack" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="ant"> |         <sec:filter-chain-map path-type="ant"> | ||||||
|             <sec:filter-chain pattern="/**" filters="scpf,preAuthFilter,etf,fsi"/> |             <sec:filter-chain pattern="/**" filters="scpf,preAuthFilter,etf,fsi"/> | ||||||
|         </sec:filter-chain-map> |         </sec:filter-chain-map> | ||||||
|     </bean> |     </bean> | ||||||
| 
 | 
 | ||||||
|     <bean id="fcpFullStack" class="org.springframework.security.util.FilterChainProxy"> |     <bean id="fcpFullStack" class="org.springframework.security.web.util.FilterChainProxy"> | ||||||
|         <sec:filter-chain-map path-type="ant"> |         <sec:filter-chain-map path-type="ant"> | ||||||
|             <sec:filter-chain pattern="/**" filters="scpf,preAuthFilter,apf,basicPf,logoutFilter,scharf,etf,fsi"/> |             <sec:filter-chain pattern="/**" filters="scpf,preAuthFilter,apf,basicPf,logoutFilter,scharf,etf,fsi"/> | ||||||
|         </sec:filter-chain-map> |         </sec:filter-chain-map> | ||||||
| @ -37,7 +37,7 @@ | |||||||
|         <sec:user name="bob" password="bobspassword" authorities="ROLE_0,ROLE_1"/> |         <sec:user name="bob" password="bobspassword" authorities="ROLE_0,ROLE_1"/> | ||||||
|     </sec:user-service> |     </sec:user-service> | ||||||
| 
 | 
 | ||||||
|     <bean id="scpf" class="org.springframework.security.context.SecurityContextPersistenceFilter"/> |     <bean id="scpf" class="org.springframework.security.context.web.SecurityContextPersistenceFilter"/> | ||||||
| 
 | 
 | ||||||
|     <bean id="apf" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"> |     <bean id="apf" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"> | ||||||
|         <property name="authenticationManager" ref="authenticationManager"/> |         <property name="authenticationManager" ref="authenticationManager"/> | ||||||
|  | |||||||
| @ -51,10 +51,6 @@ | |||||||
|             <scope>runtime</scope> |             <scope>runtime</scope> | ||||||
|             <optional>true</optional> |             <optional>true</optional> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.jmock</groupId> |  | ||||||
|             <artifactId>jmock-junit4</artifactId> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>log4j</groupId> |             <groupId>log4j</groupId> | ||||||
|             <artifactId>log4j</artifactId> |             <artifactId>log4j</artifactId> | ||||||
|  | |||||||
| @ -15,11 +15,16 @@ | |||||||
|           <artifactId>spring-security-core</artifactId> |           <artifactId>spring-security-core</artifactId> | ||||||
|           <version>${project.version}</version> |           <version>${project.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |           <groupId>org.springframework.security</groupId> | ||||||
|  |           <artifactId>spring-security-web</artifactId> | ||||||
|  |           <version>${project.version}</version> | ||||||
|  |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|           <groupId>org.springframework.security</groupId> |           <groupId>org.springframework.security</groupId> | ||||||
|           <artifactId>spring-security-ldap</artifactId> |           <artifactId>spring-security-ldap</artifactId> | ||||||
|           <version>${project.version}</version> |           <version>${project.version}</version> | ||||||
|         </dependency>         |         </dependency> | ||||||
|         <!-- SMT NTLM--> |         <!-- SMT NTLM--> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.samba.jcifs</groupId> |             <groupId>org.samba.jcifs</groupId> | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
|     <dependencies> |     <dependencies> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework.security</groupId> |             <groupId>org.springframework.security</groupId> | ||||||
|             <artifactId>spring-security-core</artifactId> |             <artifactId>spring-security-web</artifactId> | ||||||
|             <version>${project.version}</version> |             <version>${project.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|  | |||||||
| @ -1,16 +1,22 @@ | |||||||
| package org.springframework.security.ui.openid; | package org.springframework.security.ui.openid; | ||||||
| 
 | 
 | ||||||
| import junit.framework.TestCase; | import static org.junit.Assert.assertEquals; | ||||||
|  | import static org.mockito.Matchers.any; | ||||||
|  | import static org.mockito.Mockito.*; | ||||||
|  | 
 | ||||||
|  | import javax.servlet.FilterChain; | ||||||
|  | import javax.servlet.http.HttpServletRequest; | ||||||
|  | import javax.servlet.http.HttpServletResponse; | ||||||
|  | 
 | ||||||
|  | import org.junit.Before; | ||||||
|  | import org.junit.Test; | ||||||
| import org.springframework.mock.web.MockHttpServletRequest; | import org.springframework.mock.web.MockHttpServletRequest; | ||||||
| import org.springframework.mock.web.MockHttpServletResponse; | import org.springframework.mock.web.MockHttpServletResponse; | ||||||
| import org.springframework.security.MockAuthenticationManager; | import org.springframework.security.MockAuthenticationManager; | ||||||
| import org.springframework.security.ui.SavedRequestAwareAuthenticationSuccessHandler; | import org.springframework.security.ui.SavedRequestAwareAuthenticationSuccessHandler; | ||||||
| import org.springframework.security.ui.openid.consumers.MockOpenIDConsumer; | import org.springframework.security.ui.openid.consumers.MockOpenIDConsumer; | ||||||
| import org.springframework.security.util.MockFilterChain; |  | ||||||
| 
 | 
 | ||||||
| import javax.servlet.http.HttpServletRequest; | public class OpenIDAuthenticationProcessingFilterTests { | ||||||
| 
 |  | ||||||
| public class OpenIDAuthenticationProcessingFilterTests extends TestCase { |  | ||||||
| 
 | 
 | ||||||
|     OpenIDAuthenticationProcessingFilter filter; |     OpenIDAuthenticationProcessingFilter filter; | ||||||
|     private static final String REDIRECT_URL = "http://www.example.com/redirect"; |     private static final String REDIRECT_URL = "http://www.example.com/redirect"; | ||||||
| @ -19,7 +25,8 @@ public class OpenIDAuthenticationProcessingFilterTests extends TestCase { | |||||||
|     private static final String FILTER_PROCESS_URL = "http://localhost:80" + REQUEST_PATH; |     private static final String FILTER_PROCESS_URL = "http://localhost:80" + REQUEST_PATH; | ||||||
|     private static final String DEFAULT_TARGET_URL = FILTER_PROCESS_URL; |     private static final String DEFAULT_TARGET_URL = FILTER_PROCESS_URL; | ||||||
| 
 | 
 | ||||||
|     protected void setUp() throws Exception { |     @Before | ||||||
|  |     public void setUp() throws Exception { | ||||||
|         filter = new OpenIDAuthenticationProcessingFilter(); |         filter = new OpenIDAuthenticationProcessingFilter(); | ||||||
|         filter.setConsumer(new MockOpenIDConsumer(REDIRECT_URL)); |         filter.setConsumer(new MockOpenIDConsumer(REDIRECT_URL)); | ||||||
|         SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); |         SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler(); | ||||||
| @ -29,6 +36,7 @@ public class OpenIDAuthenticationProcessingFilterTests extends TestCase { | |||||||
|         filter.afterPropertiesSet(); |         filter.afterPropertiesSet(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Test | ||||||
|     public void testFilterOperation() throws Exception { |     public void testFilterOperation() throws Exception { | ||||||
|         MockHttpServletRequest req = new MockHttpServletRequest("GET", REQUEST_PATH); |         MockHttpServletRequest req = new MockHttpServletRequest("GET", REQUEST_PATH); | ||||||
|         MockHttpServletResponse response = new MockHttpServletResponse(); |         MockHttpServletResponse response = new MockHttpServletResponse(); | ||||||
| @ -45,9 +53,10 @@ public class OpenIDAuthenticationProcessingFilterTests extends TestCase { | |||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         filter.doFilter(req, response, new MockFilterChain(false)); |         FilterChain fc = mock(FilterChain.class); | ||||||
|  |         filter.doFilter(req, response, fc); | ||||||
|         assertEquals(REDIRECT_URL, response.getRedirectedUrl()); |         assertEquals(REDIRECT_URL, response.getRedirectedUrl()); | ||||||
|  |         // Filter chain shouldn't proceed | ||||||
|  |         verify(fc, never()).doFilter(any(HttpServletRequest.class), any(HttpServletResponse.class)); | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								pom.xml
									
									
									
									
									
								
							| @ -9,7 +9,7 @@ | |||||||
| 
 | 
 | ||||||
|     <modules> |     <modules> | ||||||
|         <module>core</module> |         <module>core</module> | ||||||
|         <!-- module>web</module --> |         <module>web</module> | ||||||
|         <module>ldap</module> |         <module>ldap</module> | ||||||
|         <module>config</module> |         <module>config</module> | ||||||
|         <module>acl</module> |         <module>acl</module> | ||||||
| @ -300,6 +300,12 @@ | |||||||
|             <artifactId>mockito-core</artifactId> |             <artifactId>mockito-core</artifactId> | ||||||
|             <version>1.7</version> |             <version>1.7</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.jmock</groupId> | ||||||
|  |             <artifactId>jmock-junit4</artifactId> | ||||||
|  |             <version>2.5.1</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|     </dependencies> |     </dependencies> | ||||||
| 
 | 
 | ||||||
|     <build> |     <build> | ||||||
| @ -814,12 +820,6 @@ | |||||||
|                 <version>1.8.0.7</version> |                 <version>1.8.0.7</version> | ||||||
|                 <scope>runtime</scope> |                 <scope>runtime</scope> | ||||||
|             </dependency> |             </dependency> | ||||||
|             <dependency> |  | ||||||
|                 <groupId>org.jmock</groupId> |  | ||||||
|                 <artifactId>jmock-junit4</artifactId> |  | ||||||
|                 <version>2.5.1</version> |  | ||||||
|                 <scope>test</scope> |  | ||||||
|             </dependency> |  | ||||||
|             <dependency> |             <dependency> | ||||||
|                 <groupId>commons-logging</groupId> |                 <groupId>commons-logging</groupId> | ||||||
|                 <artifactId>commons-logging</artifactId> |                 <artifactId>commons-logging</artifactId> | ||||||
|  | |||||||
| @ -39,7 +39,6 @@ import org.springframework.security.providers.TestingAuthenticationToken; | |||||||
| import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | import org.springframework.security.providers.UsernamePasswordAuthenticationToken; | ||||||
| import org.springframework.security.providers.portlet.PortletTestUtils; | import org.springframework.security.providers.portlet.PortletTestUtils; | ||||||
| import org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationToken; | import org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationToken; | ||||||
| import org.springframework.security.ui.AbstractProcessingFilter; |  | ||||||
| import org.springframework.security.userdetails.User; | import org.springframework.security.userdetails.User; | ||||||
| import org.springframework.security.util.AuthorityUtils; | import org.springframework.security.util.AuthorityUtils; | ||||||
| 
 | 
 | ||||||
| @ -52,6 +51,7 @@ import org.springframework.security.util.AuthorityUtils; | |||||||
|  */ |  */ | ||||||
| @SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||||
| public class PortletProcessingInterceptorTests { | public class PortletProcessingInterceptorTests { | ||||||
|  |     public static final String SPRING_SECURITY_LAST_EXCEPTION_KEY = "SPRING_SECURITY_LAST_EXCEPTION"; | ||||||
|     //~ Methods ======================================================================================================== |     //~ Methods ======================================================================================================== | ||||||
| 
 | 
 | ||||||
|     @Before |     @Before | ||||||
|  | |||||||
| @ -48,7 +48,7 @@ | |||||||
|        <b:property name="targetUrl" value="/secure/index.htm"/> |        <b:property name="targetUrl" value="/secure/index.htm"/> | ||||||
|     </b:bean> |     </b:bean> | ||||||
| 
 | 
 | ||||||
|     <b:bean id="expressionHandler" class="org.springframework.security.expression.support.DefaultSecurityExpressionHandler"> |     <b:bean id="expressionHandler" class="org.springframework.security.expression.support.DefaultMethodSecurityExpressionHandler"> | ||||||
|         <b:property name="permissionEvaluator" ref="permissionEvaluator" /> |         <b:property name="permissionEvaluator" ref="permissionEvaluator" /> | ||||||
|     </b:bean> |     </b:bean> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ | |||||||
|         <jdbc-user-service data-source-ref="dataSource"/> |         <jdbc-user-service data-source-ref="dataSource"/> | ||||||
|     </authentication-provider> |     </authentication-provider> | ||||||
| 
 | 
 | ||||||
|     <b:bean id="expressionHandler" class="org.springframework.security.expression.support.DefaultSecurityExpressionHandler"> |     <b:bean id="expressionHandler" class="org.springframework.security.expression.support.DefaultMethodSecurityExpressionHandler"> | ||||||
|         <b:property name="permissionEvaluator" ref="permissionEvaluator" /> |         <b:property name="permissionEvaluator" ref="permissionEvaluator" /> | ||||||
|     </b:bean> |     </b:bean> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -59,8 +59,8 @@ public class DocumentDaoImpl extends JdbcDaoSupport implements DocumentDao { | |||||||
| 
 | 
 | ||||||
|     /** Executes recursive SQL as needed to build a full Directory hierarchy of objects */ |     /** Executes recursive SQL as needed to build a full Directory hierarchy of objects */ | ||||||
|     private Directory getDirectoryWithImmediateParentPopulated(final Long id) { |     private Directory getDirectoryWithImmediateParentPopulated(final Long id) { | ||||||
|         return (Directory) getJdbcTemplate().queryForObject(SELECT_FROM_DIRECTORY_SINGLE, new Object[] {id}, new RowMapper() { |         return getJdbcTemplate().queryForObject(SELECT_FROM_DIRECTORY_SINGLE, new Object[] {id}, new RowMapper<Directory>() { | ||||||
|             public Object mapRow(ResultSet rs, int rowNumber) throws SQLException { |             public Directory mapRow(ResultSet rs, int rowNumber) throws SQLException { | ||||||
|                 Long parentDirectoryId = new Long(rs.getLong("parent_directory_id")); |                 Long parentDirectoryId = new Long(rs.getLong("parent_directory_id")); | ||||||
|                 Directory parentDirectory = Directory.ROOT_DIRECTORY; |                 Directory parentDirectory = Directory.ROOT_DIRECTORY; | ||||||
|                 if (parentDirectoryId != null && !parentDirectoryId.equals(new Long(-1))) { |                 if (parentDirectoryId != null && !parentDirectoryId.equals(new Long(-1))) { | ||||||
| @ -77,20 +77,20 @@ public class DocumentDaoImpl extends JdbcDaoSupport implements DocumentDao { | |||||||
|     public AbstractElement[] findElements(Directory directory) { |     public AbstractElement[] findElements(Directory directory) { | ||||||
|         Assert.notNull(directory, "Directory required (the ID can be null to refer to root)"); |         Assert.notNull(directory, "Directory required (the ID can be null to refer to root)"); | ||||||
|         if (directory.getId() == null) { |         if (directory.getId() == null) { | ||||||
|             List directories = getJdbcTemplate().query(SELECT_FROM_DIRECTORY_NULL, new RowMapper() { |             List<Directory> directories = getJdbcTemplate().query(SELECT_FROM_DIRECTORY_NULL, new RowMapper<Directory>() { | ||||||
|                 public Object mapRow(ResultSet rs, int rowNumber) throws SQLException { |                 public Directory mapRow(ResultSet rs, int rowNumber) throws SQLException { | ||||||
|                     return getDirectoryWithImmediateParentPopulated(new Long(rs.getLong("id"))); |                     return getDirectoryWithImmediateParentPopulated(new Long(rs.getLong("id"))); | ||||||
|                 } |                 } | ||||||
|             }); |             }); | ||||||
|             return (AbstractElement[]) directories.toArray(new AbstractElement[] {}); |             return (AbstractElement[]) directories.toArray(new AbstractElement[] {}); | ||||||
|         } |         } | ||||||
|         List directories = getJdbcTemplate().query(SELECT_FROM_DIRECTORY, new Object[] {directory.getId()}, new RowMapper() { |         List<AbstractElement> directories = getJdbcTemplate().query(SELECT_FROM_DIRECTORY, new Object[] {directory.getId()}, new RowMapper<AbstractElement>() { | ||||||
|             public Object mapRow(ResultSet rs, int rowNumber) throws SQLException { |             public Directory mapRow(ResultSet rs, int rowNumber) throws SQLException { | ||||||
|                 return getDirectoryWithImmediateParentPopulated(new Long(rs.getLong("id"))); |                 return getDirectoryWithImmediateParentPopulated(new Long(rs.getLong("id"))); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|         List files = getJdbcTemplate().query(SELECT_FROM_FILE, new Object[] {directory.getId()}, new RowMapper() { |         List<File> files = getJdbcTemplate().query(SELECT_FROM_FILE, new Object[] {directory.getId()}, new RowMapper<File>() { | ||||||
|             public Object mapRow(ResultSet rs, int rowNumber) throws SQLException { |             public File mapRow(ResultSet rs, int rowNumber) throws SQLException { | ||||||
|                 Long parentDirectoryId = new Long(rs.getLong("parent_directory_id")); |                 Long parentDirectoryId = new Long(rs.getLong("parent_directory_id")); | ||||||
|                 Directory parentDirectory = null; |                 Directory parentDirectory = null; | ||||||
|                 if (parentDirectoryId != null) { |                 if (parentDirectoryId != null) { | ||||||
|  | |||||||
| @ -50,8 +50,6 @@ | |||||||
|       <property name="providers"> |       <property name="providers"> | ||||||
|          <list> |          <list> | ||||||
|             <ref local="daoAuthenticationProvider"/> |             <ref local="daoAuthenticationProvider"/> | ||||||
|             <ref local="anonymousAuthenticationProvider"/> |  | ||||||
|             <ref local="rememberMeAuthenticationProvider"/> |  | ||||||
|          </list> |          </list> | ||||||
|       </property> |       </property> | ||||||
|    </bean> |    </bean> | ||||||
| @ -81,13 +79,11 @@ | |||||||
| 
 | 
 | ||||||
|    <!-- Automatically receives AuthenticationEvent messages --> |    <!-- Automatically receives AuthenticationEvent messages --> | ||||||
|    <bean id="loggerListener" class="org.springframework.security.event.authentication.LoggerListener"/> |    <bean id="loggerListener" class="org.springframework.security.event.authentication.LoggerListener"/> | ||||||
| 
 | <!-- | ||||||
|    <bean id="anonymousAuthenticationProvider" class="org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider"> |    <bean id="anonymousAuthenticationProvider" class="org.springframework.security.providers.anonymous.AnonymousAuthenticationProvider"> | ||||||
|       <property name="key" value="foobar"/> |       <property name="key" value="foobar"/> | ||||||
|    </bean> |    </bean> | ||||||
| 
 | 
 | ||||||
|    <bean id="httpSessionContextIntegrationFilter" class="org.springframework.security.context.HttpSessionContextIntegrationFilter"/> |  | ||||||
| 
 |  | ||||||
|    <bean id="rememberMeServices" class="org.springframework.security.ui.rememberme.TokenBasedRememberMeServices"> |    <bean id="rememberMeServices" class="org.springframework.security.ui.rememberme.TokenBasedRememberMeServices"> | ||||||
|       <property name="userDetailsService" ref="jdbcDaoImpl"/> |       <property name="userDetailsService" ref="jdbcDaoImpl"/> | ||||||
|       <property name="key" value="springRocks"/> |       <property name="key" value="springRocks"/> | ||||||
| @ -96,7 +92,7 @@ | |||||||
|    <bean id="rememberMeAuthenticationProvider" class="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider"> |    <bean id="rememberMeAuthenticationProvider" class="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider"> | ||||||
|       <property name="key" value="springRocks"/> |       <property name="key" value="springRocks"/> | ||||||
|    </bean> |    </bean> | ||||||
| 
 |  --> | ||||||
|    <!-- ========================= "BEFORE INVOCATION" AUTHORIZATION DEFINITIONS ============================== --> |    <!-- ========================= "BEFORE INVOCATION" AUTHORIZATION DEFINITIONS ============================== --> | ||||||
| 
 | 
 | ||||||
|    <!-- ACL permission masks used by this application --> |    <!-- ACL permission masks used by this application --> | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
|         <module>preauth</module> |         <module>preauth</module> | ||||||
|         <module>openid</module> |         <module>openid</module> | ||||||
|         <module>ldap</module> |         <module>ldap</module> | ||||||
|         <module>portlet</module> |         <!-- module>portlet</module --> | ||||||
|         <module>cas</module>         |         <module>cas</module>         | ||||||
|     </modules> |     </modules> | ||||||
|     <dependencies> |     <dependencies> | ||||||
|  | |||||||
| @ -17,6 +17,11 @@ | |||||||
|       <artifactId>spring-security-core</artifactId> |       <artifactId>spring-security-core</artifactId> | ||||||
|       <version>${project.version}</version> |       <version>${project.version}</version> | ||||||
|     </dependency> |     </dependency> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>org.springframework.security</groupId> | ||||||
|  |       <artifactId>spring-security-ldap</artifactId> | ||||||
|  |       <version>${project.version}</version> | ||||||
|  |     </dependency> | ||||||
|     <dependency> |     <dependency> | ||||||
|         <groupId>org.springframework.security</groupId> |         <groupId>org.springframework.security</groupId> | ||||||
|         <artifactId>spring-security-core</artifactId> |         <artifactId>spring-security-core</artifactId> | ||||||
|  | |||||||
| @ -43,10 +43,6 @@ | |||||||
|             <artifactId>standard</artifactId> |             <artifactId>standard</artifactId> | ||||||
|             <scope>test</scope> |             <scope>test</scope> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.jmock</groupId> |  | ||||||
|             <artifactId>jmock-junit4</artifactId> |  | ||||||
|         </dependency> |  | ||||||
|     </dependencies> |     </dependencies> | ||||||
|     <build> |     <build> | ||||||
|         <resources> |         <resources> | ||||||
|  | |||||||
							
								
								
									
										57
									
								
								web/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								web/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | |||||||
|  | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | ||||||
|  |     <modelVersion>4.0.0</modelVersion> | ||||||
|  |     <parent> | ||||||
|  |         <groupId>org.springframework.security</groupId> | ||||||
|  |         <artifactId>spring-security-parent</artifactId> | ||||||
|  |         <version>2.5.0-SNAPSHOT</version> | ||||||
|  |     </parent> | ||||||
|  |     <packaging>jar</packaging> | ||||||
|  |     <artifactId>spring-security-web</artifactId> | ||||||
|  |     <name>Spring Security - Web Application Security Module</name> | ||||||
|  | 
 | ||||||
|  |     <dependencies> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.security</groupId> | ||||||
|  |             <artifactId>spring-security-core</artifactId> | ||||||
|  |             <version>${project.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.security</groupId> | ||||||
|  |             <artifactId>spring-security-core</artifactId> | ||||||
|  |             <version>${project.version}</version> | ||||||
|  |             <classifier>tests</classifier> | ||||||
|  |             <optional>true</optional> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework</groupId> | ||||||
|  |             <artifactId>org.springframework.web</artifactId> | ||||||
|  |             <!-- optional>true</optional --> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework</groupId> | ||||||
|  |             <artifactId>org.springframework.jdbc</artifactId> | ||||||
|  |             <optional>true</optional> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework</groupId> | ||||||
|  |             <artifactId>org.springframework.test</artifactId> | ||||||
|  |             <optional>true</optional> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>jaxen</groupId> | ||||||
|  |             <artifactId>jaxen</artifactId> | ||||||
|  |             <version>1.1.1</version> | ||||||
|  |             <optional>true</optional> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>hsqldb</groupId> | ||||||
|  |             <artifactId>hsqldb</artifactId> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>javax.servlet</groupId> | ||||||
|  |             <artifactId>servlet-api</artifactId> | ||||||
|  |         </dependency> | ||||||
|  |     </dependencies> | ||||||
|  | 
 | ||||||
|  | </project> | ||||||
| @ -21,7 +21,7 @@ import org.springframework.security.ui.FilterChainOrder; | |||||||
| import org.springframework.security.ui.SpringSecurityFilter; | import org.springframework.security.ui.SpringSecurityFilter; | ||||||
| import org.springframework.security.ui.logout.LogoutHandler; | import org.springframework.security.ui.logout.LogoutHandler; | ||||||
| import org.springframework.security.ui.logout.SecurityContextLogoutHandler; | import org.springframework.security.ui.logout.SecurityContextLogoutHandler; | ||||||
| import org.springframework.security.util.UrlUtils; | import org.springframework.security.web.util.UrlUtils; | ||||||
| import org.springframework.beans.factory.InitializingBean; | import org.springframework.beans.factory.InitializingBean; | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| 
 | 
 | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | <html> | ||||||
|  | <body> | ||||||
|  | Concurrent session control and registration classes. | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
|  | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.springframework.security.context; | package org.springframework.security.context.web; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| @ -13,11 +13,14 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package org.springframework.security.context; | package org.springframework.security.context.web; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.ServletException; | import javax.servlet.ServletException; | ||||||
| 
 | 
 | ||||||
| import org.springframework.beans.factory.InitializingBean; | import org.springframework.beans.factory.InitializingBean; | ||||||
|  | import org.springframework.security.context.SecurityContext; | ||||||
|  | import org.springframework.security.context.SecurityContextHolder; | ||||||
|  | import org.springframework.security.context.SecurityContextImpl; | ||||||
| import org.springframework.security.ui.FilterChainOrder; | import org.springframework.security.ui.FilterChainOrder; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.springframework.security.context; | package org.springframework.security.context.web; | ||||||
| 
 | 
 | ||||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||||
| 
 | 
 | ||||||
| @ -10,6 +10,10 @@ import org.apache.commons.logging.Log; | |||||||
| import org.apache.commons.logging.LogFactory; | import org.apache.commons.logging.LogFactory; | ||||||
| import org.springframework.security.AuthenticationTrustResolver; | import org.springframework.security.AuthenticationTrustResolver; | ||||||
| import org.springframework.security.AuthenticationTrustResolverImpl; | import org.springframework.security.AuthenticationTrustResolverImpl; | ||||||
|  | import org.springframework.security.context.SecurityContext; | ||||||
|  | import org.springframework.security.context.SecurityContextHolder; | ||||||
|  | import org.springframework.security.context.SecurityContextHolderStrategy; | ||||||
|  | import org.springframework.security.context.SecurityContextImpl; | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| import org.springframework.util.ReflectionUtils; | import org.springframework.util.ReflectionUtils; | ||||||
| 
 | 
 | ||||||
| @ -1,10 +1,13 @@ | |||||||
| package org.springframework.security.context; | package org.springframework.security.context.web; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| import javax.servlet.http.HttpServletResponseWrapper; | import javax.servlet.http.HttpServletResponseWrapper; | ||||||
| 
 | 
 | ||||||
|  | import org.springframework.security.context.SecurityContext; | ||||||
|  | import org.springframework.security.context.SecurityContextHolder; | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * Base class for response wrappers which encapsulate the logic for storing a security context and which |  * Base class for response wrappers which encapsulate the logic for storing a security context and which | ||||||
|  * store the with the <code>SecurityContext</code> when a <code>sendError()</code> or <code>sendRedirect</code> |  * store the with the <code>SecurityContext</code> when a <code>sendError()</code> or <code>sendRedirect</code> | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.springframework.security.context; | package org.springframework.security.context.web; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| 
 | 
 | ||||||
| @ -8,6 +8,8 @@ import javax.servlet.http.HttpServletRequest; | |||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| import javax.servlet.http.HttpSession; | import javax.servlet.http.HttpSession; | ||||||
| 
 | 
 | ||||||
|  | import org.springframework.security.context.SecurityContext; | ||||||
|  | import org.springframework.security.context.SecurityContextHolder; | ||||||
| import org.springframework.security.ui.FilterChainOrder; | import org.springframework.security.ui.FilterChainOrder; | ||||||
| import org.springframework.security.ui.SpringSecurityFilter; | import org.springframework.security.ui.SpringSecurityFilter; | ||||||
| 
 | 
 | ||||||
| @ -1,8 +1,10 @@ | |||||||
| package org.springframework.security.context; | package org.springframework.security.context.web; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
|  | import org.springframework.security.context.SecurityContext; | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * Strategy used for persisting a {@link SecurityContext} between requests. |  * Strategy used for persisting a {@link SecurityContext} between requests. | ||||||
|  * <p> |  * <p> | ||||||
| @ -43,7 +45,7 @@ public interface SecurityContextRepository { | |||||||
|     /** |     /** | ||||||
|      * Stores the security context on completion of a request. |      * Stores the security context on completion of a request. | ||||||
|      * |      * | ||||||
|      * @param context the non-null context which was obtained f |      * @param context the non-null context which was obtained from the holder. | ||||||
|      * @param request |      * @param request | ||||||
|      * @param response |      * @param response | ||||||
|      */ |      */ | ||||||
| @ -10,7 +10,6 @@ import org.apache.commons.logging.LogFactory; | |||||||
| import org.springframework.expression.ExpressionParser; | import org.springframework.expression.ExpressionParser; | ||||||
| import org.springframework.expression.ParseException; | import org.springframework.expression.ParseException; | ||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.expression.SecurityExpressionHandler; |  | ||||||
| import org.springframework.security.intercept.web.DefaultFilterInvocationSecurityMetadataSource; | import org.springframework.security.intercept.web.DefaultFilterInvocationSecurityMetadataSource; | ||||||
| import org.springframework.security.intercept.web.RequestKey; | import org.springframework.security.intercept.web.RequestKey; | ||||||
| import org.springframework.security.util.UrlMatcher; | import org.springframework.security.util.UrlMatcher; | ||||||
| @ -27,7 +26,7 @@ public final class ExpressionBasedFilterInvocationSecurityMetadataSource extends | |||||||
|     private final static Log logger = LogFactory.getLog(ExpressionBasedFilterInvocationSecurityMetadataSource.class); |     private final static Log logger = LogFactory.getLog(ExpressionBasedFilterInvocationSecurityMetadataSource.class); | ||||||
| 
 | 
 | ||||||
|     public ExpressionBasedFilterInvocationSecurityMetadataSource(UrlMatcher urlMatcher, |     public ExpressionBasedFilterInvocationSecurityMetadataSource(UrlMatcher urlMatcher, | ||||||
|             LinkedHashMap<RequestKey, List<ConfigAttribute>> requestMap, SecurityExpressionHandler expressionHandler) { |             LinkedHashMap<RequestKey, List<ConfigAttribute>> requestMap, WebSecurityExpressionHandler expressionHandler) { | ||||||
|         super(urlMatcher, processMap(requestMap, expressionHandler.getExpressionParser())); |         super(urlMatcher, processMap(requestMap, expressionHandler.getExpressionParser())); | ||||||
|         Assert.notNull(expressionHandler, "A non-null SecurityExpressionHandler is required"); |         Assert.notNull(expressionHandler, "A non-null SecurityExpressionHandler is required"); | ||||||
|     } |     } | ||||||
| @ -6,8 +6,9 @@ import org.springframework.expression.EvaluationContext; | |||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.ConfigAttribute; | import org.springframework.security.ConfigAttribute; | ||||||
| import org.springframework.security.expression.ExpressionUtils; | import org.springframework.security.expression.ExpressionUtils; | ||||||
| import org.springframework.security.expression.SecurityExpressionHandler; | import org.springframework.security.expression.MethodSecurityExpressionHandler; | ||||||
| import org.springframework.security.expression.support.DefaultSecurityExpressionHandler; | import org.springframework.security.expression.support.DefaultMethodSecurityExpressionHandler; | ||||||
|  | import org.springframework.security.expression.web.support.DefaultWebSecurityExpressionHandler; | ||||||
| import org.springframework.security.intercept.web.FilterInvocation; | import org.springframework.security.intercept.web.FilterInvocation; | ||||||
| import org.springframework.security.vote.AccessDecisionVoter; | import org.springframework.security.vote.AccessDecisionVoter; | ||||||
| 
 | 
 | ||||||
| @ -18,7 +19,7 @@ import org.springframework.security.vote.AccessDecisionVoter; | |||||||
|  * @since 2.5 |  * @since 2.5 | ||||||
|  */ |  */ | ||||||
| public class WebExpressionVoter implements AccessDecisionVoter { | public class WebExpressionVoter implements AccessDecisionVoter { | ||||||
|     private SecurityExpressionHandler expressionHandler = new DefaultSecurityExpressionHandler(); |     private WebSecurityExpressionHandler expressionHandler = new DefaultWebSecurityExpressionHandler(); | ||||||
| 
 | 
 | ||||||
|     public int vote(Authentication authentication, Object object, List<ConfigAttribute> attributes) { |     public int vote(Authentication authentication, Object object, List<ConfigAttribute> attributes) { | ||||||
|         assert authentication != null; |         assert authentication != null; | ||||||
| @ -55,7 +56,7 @@ public class WebExpressionVoter implements AccessDecisionVoter { | |||||||
|         return clazz.isAssignableFrom(FilterInvocation.class); |         return clazz.isAssignableFrom(FilterInvocation.class); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setExpressionHandler(SecurityExpressionHandler expressionHandler) { |     public void setExpressionHandler(WebSecurityExpressionHandler expressionHandler) { | ||||||
|         this.expressionHandler = expressionHandler; |         this.expressionHandler = expressionHandler; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | package org.springframework.security.expression.web; | ||||||
|  | 
 | ||||||
|  | import org.springframework.expression.EvaluationContext; | ||||||
|  | import org.springframework.expression.ExpressionParser; | ||||||
|  | import org.springframework.security.Authentication; | ||||||
|  | import org.springframework.security.intercept.web.FilterInvocation; | ||||||
|  | 
 | ||||||
|  | public interface WebSecurityExpressionHandler { | ||||||
|  |     /** | ||||||
|  |      * @return an expression parser for the expressions used by the implementation. | ||||||
|  |      */ | ||||||
|  |     ExpressionParser getExpressionParser(); | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Provides an evaluation context in which to evaluate security expressions for a web invocation. | ||||||
|  |      */ | ||||||
|  |     EvaluationContext createEvaluationContext(Authentication authentication, FilterInvocation fi); | ||||||
|  | 
 | ||||||
|  | } | ||||||
| @ -0,0 +1,39 @@ | |||||||
|  | package org.springframework.security.expression.web.support; | ||||||
|  | 
 | ||||||
|  | import org.springframework.expression.EvaluationContext; | ||||||
|  | import org.springframework.expression.ExpressionParser; | ||||||
|  | import org.springframework.expression.spel.antlr.SpelAntlrExpressionParser; | ||||||
|  | import org.springframework.expression.spel.support.StandardEvaluationContext; | ||||||
|  | import org.springframework.security.Authentication; | ||||||
|  | import org.springframework.security.AuthenticationTrustResolver; | ||||||
|  | import org.springframework.security.AuthenticationTrustResolverImpl; | ||||||
|  | import org.springframework.security.expression.support.SecurityExpressionRoot; | ||||||
|  | import org.springframework.security.expression.web.WebSecurityExpressionHandler; | ||||||
|  | import org.springframework.security.intercept.web.FilterInvocation; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Facade which isolates Spring Security's requirements for evaluating web-security expressions | ||||||
|  |  * from the implementation of the underlying expression objects. | ||||||
|  |  * | ||||||
|  |  * @author Luke Taylor | ||||||
|  |  * @version $Id$ | ||||||
|  |  * @since 2.5 | ||||||
|  |  */ | ||||||
|  | public class DefaultWebSecurityExpressionHandler implements WebSecurityExpressionHandler { | ||||||
|  | 
 | ||||||
|  |     private AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl(); | ||||||
|  |     private ExpressionParser expressionParser = new SpelAntlrExpressionParser(); | ||||||
|  | 
 | ||||||
|  |     public ExpressionParser getExpressionParser() { | ||||||
|  |         return expressionParser; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public EvaluationContext createEvaluationContext(Authentication authentication, FilterInvocation fi) { | ||||||
|  |         StandardEvaluationContext ctx = new StandardEvaluationContext(); | ||||||
|  |         SecurityExpressionRoot root = new WebSecurityExpressionRoot(authentication, fi); | ||||||
|  |         root.setTrustResolver(trustResolver); | ||||||
|  |         ctx.setRootObject(root); | ||||||
|  | 
 | ||||||
|  |         return ctx; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,10 +1,11 @@ | |||||||
| package org.springframework.security.expression.support; | package org.springframework.security.expression.web.support; | ||||||
| 
 | 
 | ||||||
| import java.net.InetAddress; | import java.net.InetAddress; | ||||||
| import java.net.UnknownHostException; | import java.net.UnknownHostException; | ||||||
| import java.util.Arrays; | import java.util.Arrays; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
|  | import org.springframework.security.expression.support.SecurityExpressionRoot; | ||||||
| import org.springframework.security.intercept.web.FilterInvocation; | import org.springframework.security.intercept.web.FilterInvocation; | ||||||
| import org.springframework.util.StringUtils; | import org.springframework.util.StringUtils; | ||||||
| 
 | 
 | ||||||
| @ -15,7 +15,7 @@ | |||||||
| 
 | 
 | ||||||
| package org.springframework.security.intercept.web; | package org.springframework.security.intercept.web; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.util.UrlUtils; | import org.springframework.security.web.util.UrlUtils; | ||||||
| 
 | 
 | ||||||
| import javax.servlet.FilterChain; | import javax.servlet.FilterChain; | ||||||
| import javax.servlet.ServletRequest; | import javax.servlet.ServletRequest; | ||||||
| @ -65,7 +65,7 @@ public class FilterInvocation { | |||||||
|      * Indicates the URL that the user agent used for this request. |      * Indicates the URL that the user agent used for this request. | ||||||
|      * <p> |      * <p> | ||||||
|      * The returned URL does <b>not</b> reflect the port number determined from a |      * The returned URL does <b>not</b> reflect the port number determined from a | ||||||
|      * {@link org.springframework.security.util.PortResolver}. |      * {@link org.springframework.security.web.util.PortResolver}. | ||||||
|      * |      * | ||||||
|      * @return the full URL of this request |      * @return the full URL of this request | ||||||
|      */ |      */ | ||||||
| @ -1,9 +1,9 @@ | |||||||
| package org.springframework.security.securechannel; | package org.springframework.security.securechannel; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.util.PortMapper; | import org.springframework.security.web.util.PortMapper; | ||||||
| import org.springframework.security.util.PortResolver; | import org.springframework.security.web.util.PortMapperImpl; | ||||||
| import org.springframework.security.util.PortMapperImpl; | import org.springframework.security.web.util.PortResolver; | ||||||
| import org.springframework.security.util.PortResolverImpl; | import org.springframework.security.web.util.PortResolverImpl; | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| 
 | 
 | ||||||
| import org.apache.commons.logging.Log; | import org.apache.commons.logging.Log; | ||||||
| @ -12,8 +12,8 @@ import org.apache.commons.logging.Log; | |||||||
| import org.apache.commons.logging.LogFactory; | import org.apache.commons.logging.LogFactory; | ||||||
| import org.springframework.security.Authentication; | import org.springframework.security.Authentication; | ||||||
| import org.springframework.security.ui.logout.LogoutHandler; | import org.springframework.security.ui.logout.LogoutHandler; | ||||||
| import org.springframework.security.util.RedirectUtils; | import org.springframework.security.web.util.RedirectUtils; | ||||||
| import org.springframework.security.util.UrlUtils; | import org.springframework.security.web.util.UrlUtils; | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| import org.springframework.util.StringUtils; | import org.springframework.util.StringUtils; | ||||||
| 
 | 
 | ||||||
| @ -38,8 +38,8 @@ import org.springframework.security.context.SecurityContextHolder; | |||||||
| import org.springframework.security.event.authentication.InteractiveAuthenticationSuccessEvent; | import org.springframework.security.event.authentication.InteractiveAuthenticationSuccessEvent; | ||||||
| import org.springframework.security.ui.rememberme.NullRememberMeServices; | import org.springframework.security.ui.rememberme.NullRememberMeServices; | ||||||
| import org.springframework.security.ui.rememberme.RememberMeServices; | import org.springframework.security.ui.rememberme.RememberMeServices; | ||||||
| import org.springframework.security.util.SessionUtils; | import org.springframework.security.web.util.SessionUtils; | ||||||
| import org.springframework.security.util.UrlUtils; | import org.springframework.security.web.util.UrlUtils; | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -9,8 +9,8 @@ import javax.servlet.http.HttpServletRequest; | |||||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||||
| 
 | 
 | ||||||
| import org.springframework.security.AuthenticationException; | import org.springframework.security.AuthenticationException; | ||||||
| import org.springframework.security.util.RedirectUtils; | import org.springframework.security.web.util.RedirectUtils; | ||||||
| import org.springframework.security.util.UrlUtils; | import org.springframework.security.web.util.UrlUtils; | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
| @ -23,10 +23,10 @@ import org.springframework.security.AuthenticationTrustResolverImpl; | |||||||
| import org.springframework.security.InsufficientAuthenticationException; | import org.springframework.security.InsufficientAuthenticationException; | ||||||
| import org.springframework.security.context.SecurityContextHolder; | import org.springframework.security.context.SecurityContextHolder; | ||||||
| import org.springframework.security.ui.savedrequest.SavedRequest; | import org.springframework.security.ui.savedrequest.SavedRequest; | ||||||
| import org.springframework.security.util.PortResolver; |  | ||||||
| import org.springframework.security.util.PortResolverImpl; |  | ||||||
| import org.springframework.security.util.ThrowableAnalyzer; | import org.springframework.security.util.ThrowableAnalyzer; | ||||||
| import org.springframework.security.util.ThrowableCauseExtractor; | import org.springframework.security.util.ThrowableCauseExtractor; | ||||||
|  | import org.springframework.security.web.util.PortResolver; | ||||||
|  | import org.springframework.security.web.util.PortResolverImpl; | ||||||
| import org.springframework.beans.factory.InitializingBean; | import org.springframework.beans.factory.InitializingBean; | ||||||
| 
 | 
 | ||||||
| import org.springframework.util.Assert; | import org.springframework.util.Assert; | ||||||
| @ -176,7 +176,7 @@ public class ExceptionTranslationFilter extends SpringSecurityFilter implements | |||||||
|      * <code>false</code>. |      * <code>false</code>. | ||||||
|      * <p> |      * <p> | ||||||
|      * Remember to also set |      * Remember to also set | ||||||
|      * {@link org.springframework.security.context.HttpSessionSecurityContextRepository#setAllowSessionCreation(boolean)} |      * {@link org.springframework.security.context.web.HttpSessionSecurityContextRepository#setAllowSessionCreation(boolean)} | ||||||
|      * to <code>false</code> if you set this property to <code>false</code>. |      * to <code>false</code> if you set this property to <code>false</code>. | ||||||
|      * |      * | ||||||
|      * @return <code>true</code> if the <code>HttpSession</code> will be |      * @return <code>true</code> if the <code>HttpSession</code> will be | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user