Podstawowe i oparte na formularzu uwierzytelnianie za pomocą Spring Security Javaconfig

Próbuję zdefiniować dwie różne konfiguracje zabezpieczeń dla różnych wzorców adresów URL, z których jeden używa logowania formularza, a drugi używa podstawowego uwierzytelniania dla interfejsu API.

Rozwiązanie, którego szukam, jest podobne do wyjaśnionego tutajhttp://meera-subbarao.blogspot.co.uk/2010/11/spring-security-combining-basic-and.html ale chciałbym to zrobić za pomocą java config.

Z góry dziękuję.

Jest to konfiguracja, którą obecnie mam:

@Configuration
@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserService userService;

    @Override
    protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        // Ignore any request that starts with "/resources/".
        web.ignoring().antMatchers("/resources/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeUrls().antMatchers("/", "/index", "/user/**", "/about").permitAll()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .anyRequest().authenticated()
        .and().formLogin()
        .loginUrl("/login")
        .failureUrl("/login-error")
        .loginProcessingUrl("/security_check")
        .usernameParameter("j_username").passwordParameter("j_password")
        .permitAll();

        http.logout().logoutUrl("/logout");
        http.rememberMe().rememberMeServices(rememberMeServices()).key("password");
    }

    @Bean
    public RememberMeServices rememberMeServices() {
        TokenBasedRememberMeServices rememberMeServices = new TokenBasedRememberMeServices("password", userService);
        rememberMeServices.setCookieName("cookieName");
        rememberMeServices.setParameter("rememberMe");
        return rememberMeServices;
    }
}

questionAnswers(5)

yourAnswerToTheQuestion