Tworzenie wielu sekcji HTTP w Spring Security Java Config

Przy użyciu konfiguracji Spring Security XML można zdefiniować wiele elementów HTTP, aby określić różne reguły dostępu dla różnych części aplikacji. Przykład podany w8.6 Konfiguracja zaawansowanej przestrzeni nazw definiuje oddzielne sekcje stanowe i bezstanowe aplikacji, z których pierwsza używa sesji i logowania formularza, a druga nie używa sesji i uwierzytelniania BASIC:

<!-- Stateless RESTful service using Basic authentication -->
<http pattern="/restful/**" create-session="stateless">
    <intercept-url pattern='/**' access='ROLE_REMOTE' />
    <http-basic />
</http>

<!-- Empty filter chain for the login page -->
<http pattern="/login.htm*" security="none"/>

<!-- Additional filter chain for normal users, matching all other requests -->
<http>
    <intercept-url pattern='/**' access='ROLE_USER' />
    <form-login login-page='/login.htm' default-target-url="/home.htm"/>
    <logout />
</http>

Nie wiem, jak zrobić to samo z Java Config. Ważne jest, aby wyłączyć sesje i użyć innego punktu wejścia dla moich usług internetowych. W tej chwili mam następujące:

@Override
public void configure(WebSecurity security)
{
    security.ignoring().antMatchers("/resource/**", "/favicon.ico");
}

@Override
protected void configure(HttpSecurity security) throws Exception
{
    security
            .authorizeRequests()
                .anyRequest().authenticated()
            .and().formLogin()
                .loginPage("/login").failureUrl("/login?loginFailed")
                .defaultSuccessUrl("/ticket/list")
                .usernameParameter("username")
                .passwordParameter("password")
                .permitAll()
            .and().logout()
                .logoutUrl("/logout").logoutSuccessUrl("/login?loggedOut")
                .invalidateHttpSession(true).deleteCookies("JSESSIONID")
                .permitAll()
            .and().sessionManagement()
                .sessionFixation().changeSessionId()
                .maximumSessions(1).maxSessionsPreventsLogin(true)
                .sessionRegistry(this.sessionRegistryImpl())
            .and().and().csrf()
                .requireCsrfProtectionMatcher((r) -> {
                    String m = r.getMethod();
                    return !r.getServletPath().startsWith("/services/") &&
                            ("POST".equals(m) || "PUT".equals(m) ||
                                    "DELETE".equals(m) || "PATCH".equals(m));
                });
}

Korzystając z tego, udało mi się wyłączyć ochronę CSRF dla moich usług internetowych. Ale naprawdę potrzebuję całej oddzielnej konfiguracji HTTP, aby móc wyłączyć sesje i określić inny punkt wejścia. Wiem, że mogę użyćrequestMatcher lubrequestMatchers aby ograniczyć identyfikatory URI, których dotyczy, ale nie wydaje się, aby można było tego użyć do tworzenia oddzielnych konfiguracji. To prawie tak, jak potrzebujędwa configure(HttpSecurity security) metody.

questionAnswers(1)

yourAnswerToTheQuestion