Как отключить экран входа в систему с пружиной?

Я использую зависимость spring-boot-starter-security, чтобы использовать несколько классов, которые поставляются с spring-security. Но поскольку я хочу интегрировать его в существующее приложение vaadin, я хочу использовать только классы, а не экран входа/авторизации по умолчанию весны.

Как отключить этот экран?

Я не могу создавать какие-либо конфигурации, расширяя WebSecurityConfigurerAdapter как мой основной класс ввода уже extends SpringBootServletInitializer. Кроме того, приложения vaadin в основном работают по одному URL-адресу все время и используют внутреннюю навигацию.

@EnableAutoConfiguration
public class MyApp extends SpringBootServletInitializer { 

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(MyApp.class);
        }

        public static void main(String[] args) {
            SpringApplication.run(MyApp.class, args);
        }
}

Итак, что я могу сделать, чтобы отключить экран входа в систему, но хотя использовать функции безопасности Spring?

Ответ 1

Безопасность по умолчанию в Spring Boot - Basic. Вы можете отключить его, установив security.basic.enabled=false. Подробнее об этом здесь и здесь.

Ответ 2

вы можете использовать java-конфигурацию следующим образом:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity security) throws Exception
    {
     security.httpBasic().disable();
    }
}

и перезагрузите приложение, если оно обновляется автоматически.

Ответ 3

Если кому-то все еще нужно решение, поместите метод в контроллер REST следующим образом:

@RestController
public class myRestController{

    @GetMapping("/login")
    public String redirectTo(){
        return "yourRedirectLink";
    }

}

Это решение очень хорошо для работы с пружиной и реакции, упакованное в банку

Ответ 4

Кажется, есть более простое решение.

Просто поместите эту аннотацию над вашим основным классом или там же, где и ваша аннотация SpingBootApplication

@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})

Ответ 5

Чтобы полностью отключить маршрут входа, используйте объект конфигурации Spring Security.

Следующий фрагмент использует org.springframework.boot:2.1.6.RELEASE

@Configuration
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {
  override fun configure(security: HttpSecurity) {
    super.configure(security)

    security.httpBasic().disable()

    security.cors().and().csrf().disable().authorizeRequests()
      .anyRequest().authenticated()
      .and().formLogin().disable() // <-- this will disable the login route
      .addFilter(JWTAuthorizationFilter(authenticationManager()))
      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
  }

  @Bean
  fun corsConfigurationSource(): CorsConfigurationSource {
    val source = UrlBasedCorsConfigurationSource()
    val config = CorsConfiguration().applyPermitDefaultValues()
    config.addExposedHeader("Authorization")
    source.registerCorsConfiguration("/**", config)
    return source
  }
}

Ответ 6

Отключите функцию безопасности по умолчанию, исключив ее из автоконфигурации. Добавить SecurityAutoConfiguration.class в exclude имущества @SpringBootApplication аннотацию на вашем главном классе. Например:

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}