with tutorial manager example ejemplo disable authenticationmanager java spring-boot spring-security

java - tutorial - spring security rules



Spring Boot 2.0.x deshabilita la seguridad para cierto perfil (5)

Así es como terminé resolviendo el problema. Aquí hay un ejemplo de cómo se veía mi configuración de seguridad en Spring Boot 1.5.x. La seguridad se deshabilitó con la propiedad security.basic.enabled=false :

@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/upload/**"); } @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable().authorizeRequests() .anyRequest().authenticated() .and().httpBasic(); } }

Dado que security.basic.enabled se eliminó en Spring Boot 2 (pero aún reservado como nombre de propiedad), terminé usando security.enabled como una propiedad personalizada. Aquí hay un ejemplo de cómo se ve mi configuración en Spring Boot 2:

@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Value("${security.enabled:true}") private boolean securityEnabled; @Override public void configure(WebSecurity web) throws Exception { if (securityEnabled) web.ignoring().antMatchers("/upload/**"); else web.ignoring().antMatchers("/**"); } @Override protected void configure(HttpSecurity http) throws Exception { if (securityEnabled) http.csrf().disable().authorizeRequests() .anyRequest().authenticated() .and().httpBasic(); } }

En Spring Boot 1.5.x, configuré la seguridad y en ciertos perfiles (por ejemplo, local), agregué la línea security.basic.enabled=false al archivo .properties para deshabilitar toda la seguridad de ese perfil. Estoy tratando de migrar al nuevo Spring Boot 2, donde se elimina esa propiedad de configuración. ¿Cómo puedo lograr el mismo comportamiento (sin usar esta propiedad) en Spring Boot 2.0.x?

Ya leí Spring-Boot-Security-2.0 y security-changes-in-spring-boot-2-0-m4 y no hay nada con respecto a esta propiedad.


Debe agregar una configuración personalizada de Spring Security, consulte la Guía de referencia de Spring Boot :

28.1 Seguridad MVC

La configuración de seguridad predeterminada se implementa en SecurityAutoConfiguration y UserDetailsServiceAutoConfiguration . SecurityAutoConfiguration importa SpringBootWebSecurityConfiguration para seguridad web y UserDetailsServiceAutoConfiguration configura la autenticación, que también es relevante en aplicaciones no web. Para desactivar completamente la configuración de seguridad de la aplicación web predeterminada, puede agregar un bean de tipo WebSecurityConfigurerAdapter (hacerlo no deshabilita la configuración de UserDetailsService o la seguridad del Actuador).

Por ejemplo:

@Configuration public class ApplicationSecurity extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web .ignoring() .antMatchers("/**"); } }

Para usar la configuración solo para un perfil, agregue @Profile a la clase. Si desea habilitarlo por propiedad, agregue ConditionalOnProperty a la clase.


En realidad, hay varias respuestas para ciertas configuraciones para esta pregunta; en mi caso, he estado jugando Spring Boot 2 con Spring Security y JWT. Para asegurar mis puntos finales REST, necesito crear tokens, etc. Después de escribir mi código e intentar probar mis puntos finales para ver si JWT funciona bien, termino frente a la página de inicio de sesión predeterminada. Intenté cambiar el archivo de propiedades mencionado anteriormente y finalmente lo deshabilité agregando la @SpringBootApplication(exclude = {SecurityAutoConfiguration.class} ) a mi clase de aplicación.

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


En springboot 2.1.4 tuve que hacer esto

@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class, SecurityFilterAutoConfiguration.class})


Hay otra opción para deshabilitar la seguridad en Spring Boot 2

@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})

Agregue esto sobre la clase principal