It sort of works, If I go to the actuator I get the http basic auth, if I on the same session goto my pages.. I get an "ugly" access denied page and not the configured wicket login page. So it sort of works..
If I just goto localhost:8080/ I get an default spring login page not the wicket one.. Upon succesfull login it forwards me to the wicket login page, where I can login again and then get to the real application.. Below my current code: package dk.netdesign.ccadmin.frontend.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.stereotype.Component; @Configuration public class WicketWebSecurityAdapterConfig extends WebSecurityConfigurerAdapter { @Configuration @Order(1) public static class RestSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/actuator/**").authorizeRequests().anyRequest().hasRole("ACTUATOR") .and().csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and().httpBasic(); } } @Configuration @Order(2) public static class WicketSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/page/**").authorizeRequests() .antMatchers("/page/login**").permitAll() .antMatchers("/page/**").hasAnyAuthority("USER", "ADMIN") .and().formLogin().loginPage("/page/login").loginProcessingUrl("/fake-url") .and().csrf().disable(); } } @Bean public static BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean(name = "authenticationManager") @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } public interface IAuthenticationFacade { Authentication getAuthentication(); } @Component public class AuthenticationFacade implements IAuthenticationFacade { @Override public Authentication getAuthentication() { return SecurityContextHolder.getContext().getAuthentication(); } } @Bean public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser( User.withUsername("admin") .password(passwordEncoder().encode("admin")).authorities("USER", "ADMIN") .build()); manager.createUser( User.withUsername("actuator") .password(passwordEncoder().encode("actuator")).roles("ACTUATOR") .build()); return manager; } } On Thu, Jan 24, 2019 at 3:19 PM nino martinez wael < nino.martinez.w...@gmail.com> wrote: > Thanks will try it:) > > On Thu, Jan 24, 2019 at 3:14 PM Zbynek Vavros <zbynekvav...@gmail.com> > wrote: > >> In my case it works something like this: >> >> @Configuration >> @EnableWebSecurity >> public class SecurityConfiguration { >> >> @Configuration >> @Order(1) >> public static class RestSecurityConfig extends >> WebSecurityConfigurerAdapter { >> >> .. user details service, auth providers etc >> >> @Override >> protected void configure(HttpSecurity http) throws Exception { >> >> >> http.antMatcher("/api/**").authorizeRequests().anyRequest().authenticated() >> .and().csrf().disable() >> >> >> .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) >> .and().httpBasic(); >> } >> } >> >> @Configuration >> @Order(2) >> public static class WicketSecurityConfig extends >> WebSecurityConfigurerAdapter { >> >> .. user details service, auth providers etc >> >> @Override >> protected void configure(AuthenticationManagerBuilder auth) throws >> Exception { >> auth.authenticationProvider(wicketAuthenticationProvider); >> } >> >> @Override >> protected void configure(HttpSecurity http) throws Exception { >> http.antMatcher("/page/**").authorizeRequests() >> .antMatchers("/page/login**").permitAll() >> .antMatchers("/page/**").hasRole("ROLE") >> >> >> .and().formLogin().loginPage("/page/login").loginProcessingUrl("/fake-url") >> .and().csrf().disable(); >> } >> >> @Override >> @Bean(name = "authenticationManager") >> public AuthenticationManager authenticationManagerBean() throws >> Exception { >> return super.authenticationManagerBean(); >> } >> } >> } >> >> The RestSecurityConfigwould be what you would do for actuators, for me >> thats the REST API. >> Not the order of "antMatcher", "authorizeRequests" and " antMatchers". >> >> Zbynek >> >> On Thu, Jan 24, 2019 at 3:09 PM nino martinez wael < >> nino.martinez.w...@gmail.com> wrote: >> >> > do you have an example? OR is it just to cut them into two like: >> > WebSecurityConfigurerAdapter A: >> > >> > >> http.authorizeRequests().antMatchers("/actuator/**","/actuator").hasRole("ACTUATOR").and().httpBasic(); >> > >> > WebSecurityConfigurerAdapter B: >> > http >> > .csrf().disable() >> > .authorizeRequests().anyRequest().permitAll() >> > .and() >> > .logout() >> > .permitAll(); >> > http.headers().frameOptions().disable(); >> > >> > >> > On Thu, Jan 24, 2019 at 3:06 PM Zbynek Vavros <zbynekvav...@gmail.com> >> > wrote: >> > >> > > Hi, >> > > >> > > I did similar thing, the trick here is to use two >> > > WebSecurityConfigurerAdaptes. >> > > >> > > Zbynek >> > > >> > > On Thu, Jan 24, 2019 at 2:55 PM nino martinez wael < >> > > nino.martinez.w...@gmail.com> wrote: >> > > >> > > > Hope its okay to use the wicket user mailing list for this:) >> > > > >> > > > First of all thanks to MarcGiffing for making the project. But I >> cannot >> > > get >> > > > actuator endpoints to work with spring security and wicket spring >> > boot.. >> > > > I've tried a lot of things.. >> > > > >> > > > IN my WebSecurityConfigurerAdapter: >> > > > >> > > > http >> > > > >> > > > >> > > > >> > > >> > >> .authorizeRequests().antMatchers("/actuator/**","/actuator").hasRole("ACTUATOR").and().httpBasic(); >> > > > >> > > > http >> > > > .csrf().disable() >> > > > .authorizeRequests().anyRequest().permitAll() >> > > > .and() >> > > > .logout() >> > > > .permitAll(); >> > > > http.headers().frameOptions().disable(); >> > > > >> > > > But that just disables actuator and messes with the Wicket side of >> the >> > > > security.. Any one have some clues= >> > > > >> > > > -- >> > > > Best regards / Med venlig hilsen >> > > > Nino Martinez >> > > > >> > > >> > >> > >> > -- >> > Best regards / Med venlig hilsen >> > Nino Martinez >> > >> > > > -- > Best regards / Med venlig hilsen > Nino Martinez > -- Best regards / Med venlig hilsen Nino Martinez