Saltar al contenido

La propiedad ‘security.basic.enabled’ está obsoleta: la configuración automática de seguridad ya no se puede personalizar

Solución:

Spring Boot 2.0 cambió su configuración automática (incluidas algunas propiedades) y ahora tiene un comportamiento único que se detiene tan pronto como agrega su propio WebSecurityConfigurerAdapter. La configuración predeterminada se parece a

protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .anyRequest().authenticated()
            .and()
        .formLogin()
            .and()
        .httpBasic();
}

Un único usuario con una contraseña generada está configurado de forma predeterminada. Para personalizar este usuario use las propiedades debajo spring.security.user.

spring.security.user.name=user # Default user name.
spring.security.user.password= # Password for the default user name.
spring.security.user.roles= # Granted roles for the default user name.

Las siguientes propiedades se han eliminado a partir de Spring Boot 2:

security.basic.authorize-mode
security.basic.enabled
security.basic.path
security.basic.realm
security.enable-csrf
security.headers.cache
security.headers.content-security-policy
security.headers.content-security-policy-mode
security.headers.content-type
security.headers.frame
security.headers.hsts
security.headers.xss
security.ignored
security.require-ssl
security.sessions

Los reemplazos (si existen) se pueden encontrar aquí: Apéndice A. Propiedades comunes de la aplicación

Para ser claros: si crea un WebSecurityConfigurerAdapter personalizado, la configuración de seguridad predeterminada se reemplazará con su configuración personalizada:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // For example: Use only Http Basic and not form login.
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .httpBasic();
    }
}

Para obtener más información, visite la Guía de migración de Spring 2.0.

Esto es porque cuando escribes security.basic.enabled = false básicamente le dices a la aplicación que no me importa la seguridad y permites todas las solicitudes. Después de Spring Boot 2.0, no puede simplemente escribir esa configuración para hacer que la aplicación sea insegura. Necesitas escribir un código para hacer eso. O simplemente puede copiar lo siguiente.

package com.LockheedMartin.F22Simulator;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll();
    }
}

Por cierto, deberías eliminar security.basic.enabled = false desde su application.properties, como spring 2.*.* ya no comprende esa propiedad y si tiene la configuración adecuada de Intellij, debería ver una advertencia que dice 'unsupported property'.

Si está utilizando Spring reactive Security, debemos hacer algo como esto,

@Bean
  public SecurityWebFilterChain springWebFilterChain(ServerHttpSecurity http) {
    http.authorizeExchange().anyExchange().permitAll();
    return http.build();
  }

También hay otra publicación de stackoverflow sobre esto, Spring boot 2.0 deshabilita la seguridad predeterminada

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *