diff --git a/src/main/java/de/thm/arsnova/config/SecurityConfig.java b/src/main/java/de/thm/arsnova/config/SecurityConfig.java index f0c380d48e091a9e22d6e86732364d720bf7157b..da021fe18192b085ec2b79503d5a454fd27d6bbf 100644 --- a/src/main/java/de/thm/arsnova/config/SecurityConfig.java +++ b/src/main/java/de/thm/arsnova/config/SecurityConfig.java @@ -63,6 +63,7 @@ import de.thm.arsnova.security.DbUserDetailsService; @Configuration @EnableGlobalMethodSecurity(prePostEnabled = true) @EnableWebSecurity +@Profile("!test") public class SecurityConfig extends WebSecurityConfigurerAdapter implements ServletContextAware { private final Logger logger = LoggerFactory.getLogger(SecurityConfig.class); @@ -214,13 +215,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv // LDAP Authentication Configuration - @Profile("!test") @Bean public LdapAuthenticationProvider ldapAuthenticationProvider() throws Exception { return new LdapAuthenticationProvider(ldapAuthenticator(), ldapAuthoritiesPopulator()); } - @Profile("!test") @Bean public LdapContextSource ldapContextSource() throws Exception { DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource(ldapUrl); @@ -231,7 +230,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return contextSource; } - @Profile("!test") @Bean public LdapAuthenticator ldapAuthenticator() throws Exception { BindAuthenticator authenticator = new BindAuthenticator(ldapContextSource()); @@ -240,7 +238,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return authenticator; } - @Profile("!test") @Bean public LdapAuthoritiesPopulator ldapAuthoritiesPopulator() throws Exception { return new DefaultLdapAuthoritiesPopulator(ldapContextSource(), null); @@ -248,7 +245,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv // CAS Authentication Configuration - @Profile("!test") @Bean public CasAuthenticationProvider casAuthenticationProvider() { CasAuthenticationProvider authProvider = new CasAuthenticationProvider(); @@ -260,13 +256,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return authProvider; } - @Profile("!test") @Bean public CasUserDetailsService casUserDetailsService() { return new CasUserDetailsService(); } - @Profile("!test") @Bean public ServiceProperties casServiceProperties() { ServiceProperties properties = new ServiceProperties(); @@ -276,13 +270,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return properties; } - @Profile("!test") @Bean public Cas20ProxyTicketValidator casTicketValidator() { return new Cas20ProxyTicketValidator(casUrl); } - @Profile("!test") @Bean public CasAuthenticationEntryPoint casAuthenticationEntryPoint() { CasAuthenticationEntryPoint entryPoint = new CasAuthenticationEntryPoint(); @@ -292,7 +284,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return entryPoint; } - @Profile("!test") @Bean public CasAuthenticationFilter casAuthenticationFilter() throws Exception { CasAuthenticationFilter filter = new CasAuthenticationFilter(); @@ -303,7 +294,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return filter; } - @Profile("!test") @Bean public LogoutFilter casLogoutFilter() { LogoutFilter filter = new LogoutFilter(casLogoutSuccessHandler(), logoutHandler()); @@ -312,7 +302,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return filter; } - @Profile("!test") @Bean public LogoutSuccessHandler casLogoutSuccessHandler() { CASLogoutSuccessHandler handler = new CASLogoutSuccessHandler(); @@ -324,7 +313,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv // Facebook Authentication Configuration - @Profile("!test") @Bean public OAuthAuthenticationEntryPoint facebookEntryPoint() { final OAuthAuthenticationEntryPoint entryPoint = new OAuthAuthenticationEntryPoint(); @@ -333,7 +321,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return entryPoint; } - @Profile("!test") @Bean public FacebookProvider facebookProvider() { final FacebookProvider provider = new FacebookProvider(); @@ -344,7 +331,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return provider; } - @Profile("!test") @Bean public OAuthAuthenticationFilter facebookFilter() throws Exception { final OAuthAuthenticationFilter filter = new OAuthAuthenticationFilter("/j_spring_facebook_security_check"); @@ -356,7 +342,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return filter; } - @Profile("!test") @Bean public OAuthAuthenticationProvider facebookAuthProvider() { final OAuthAuthenticationProvider authProvider = new OAuthAuthenticationProvider(); @@ -367,7 +352,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv // Twitter Authentication Configuration - @Profile("!test") @Bean public TwitterProvider twitterProvider() { final TwitterProvider provider = new TwitterProvider(); @@ -378,7 +362,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return provider; } - @Profile("!test") @Bean public OAuthAuthenticationFilter twitterFilter() throws Exception { final OAuthAuthenticationFilter filter = new OAuthAuthenticationFilter("/j_spring_twitter_security_check"); @@ -389,7 +372,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return filter; } - @Profile("!test") @Bean public OAuthAuthenticationProvider twitterAuthProvider() { final OAuthAuthenticationProvider authProvider = new OAuthAuthenticationProvider(); @@ -400,7 +382,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv // Google Authentication Configuration - @Profile("!test") @Bean public Google2Provider googleProvider() { final Google2Provider provider = new Google2Provider(); @@ -412,7 +393,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return provider; } - @Profile("!test") @Bean public OAuthAuthenticationFilter googleFilter() throws Exception { final OAuthAuthenticationFilter filter = new OAuthAuthenticationFilter("/j_spring_google_security_check"); @@ -424,7 +404,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter implements Serv return filter; } - @Profile("!test") @Bean public OAuthAuthenticationProvider googleAuthProvider() { final OAuthAuthenticationProvider authProvider = new OAuthAuthenticationProvider(); diff --git a/src/test/java/de/thm/arsnova/config/TestSecurityConfig.java b/src/test/java/de/thm/arsnova/config/TestSecurityConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..012c40b7b69a43e698b6d9e3cb6711f487003831 --- /dev/null +++ b/src/test/java/de/thm/arsnova/config/TestSecurityConfig.java @@ -0,0 +1,138 @@ +package de.thm.arsnova.config; + +import org.jasig.cas.client.validation.Cas20ProxyTicketValidator; +import org.scribe.up.provider.impl.FacebookProvider; +import org.scribe.up.provider.impl.Google2Provider; +import org.scribe.up.provider.impl.TwitterProvider; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.cas.ServiceProperties; +import org.springframework.security.cas.authentication.CasAuthenticationProvider; +import org.springframework.security.cas.web.CasAuthenticationEntryPoint; +import org.springframework.security.cas.web.CasAuthenticationFilter; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; + +import com.github.leleuj.ss.oauth.client.authentication.OAuthAuthenticationProvider; +import com.github.leleuj.ss.oauth.client.web.OAuthAuthenticationEntryPoint; +import com.github.leleuj.ss.oauth.client.web.OAuthAuthenticationFilter; + +import de.thm.arsnova.CasUserDetailsService; + +@Configuration +@EnableGlobalMethodSecurity(prePostEnabled = true) +@EnableWebSecurity +@Profile("test") +public class TestSecurityConfig extends SecurityConfig { + @Override + protected void configure(HttpSecurity http) {}; + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication() + .withUser("ptsr00") + .password("secret") + .authorities("ROLE_USER") + ; + } + + @Bean + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManager(); + } + + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); + } + + + /* Override for test unnecessary Beans with null */ + + @Override + public CasAuthenticationProvider casAuthenticationProvider() { + return null; + } + + @Override + public CasUserDetailsService casUserDetailsService() { + return null; + } + + @Override + public ServiceProperties casServiceProperties() { + return null; + } + + @Override + public Cas20ProxyTicketValidator casTicketValidator() { + return null; + } + + @Override + public CasAuthenticationEntryPoint casAuthenticationEntryPoint() { + return null; + } + + @Override + public CasAuthenticationFilter casAuthenticationFilter() { + return null; + } + + @Override + public FacebookProvider facebookProvider() { + return null; + } + + @Override + public OAuthAuthenticationFilter facebookFilter() { + return null; + } + + @Override + public OAuthAuthenticationProvider facebookAuthProvider() { + return null; + } + + @Override + public OAuthAuthenticationEntryPoint facebookEntryPoint() { + return null; + } + + @Override + public Google2Provider googleProvider() { + return null; + } + + @Override + public OAuthAuthenticationFilter googleFilter() { + return null; + } + + @Override + public OAuthAuthenticationProvider googleAuthProvider() { + return null; + } + + @Override + public TwitterProvider twitterProvider() { + return null; + } + + @Override + public OAuthAuthenticationFilter twitterFilter() { + return null; + } + + @Override + public OAuthAuthenticationProvider twitterAuthProvider() { + return null; + } +} diff --git a/src/test/resources/test-config.xml b/src/test/resources/test-config.xml index dcef7e9a14d88a8f861b62060d97bf030e7c5c84..efaf6fd87ae7868e0ed09c598117fb2895b5172d 100644 --- a/src/test/resources/test-config.xml +++ b/src/test/resources/test-config.xml @@ -25,15 +25,4 @@ </map> </property> </bean> - - <!-- - <security:authentication-manager> - <security:authentication-provider> - <security:user-service> - <security:user name="ptsr00" password="secret" - authorities="" /> - </security:user-service> - </security:authentication-provider> - </security:authentication-manager> - --> </beans>