Cuando uso security.basic.enabled = false para deshabilitar la seguridad en un proyecto Spring Boot que tiene las siguientes dependencias:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Veo la siguiente excepción:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration$ManagementWebSecurityConfigurerAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.setObjectPostProcessor(org.springframework.security.config.annotation.ObjectPostProcessor); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.config.annotation.ObjectPostProcessor] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Para solucionar esta excepción, tuve que agregar la propiedad - management.security.enabled = false . Tengo entendido que cuando el actuador está en la ruta de clase, tanto security.basic.enabled = false como management.security.enabled = false deben configurarse para deshabilitar la seguridad.
¿Podría alguien avisarme si mi comprensión es incorrecta?
spring-security
spring-boot
usuario3600073
fuente
fuente
ClientDetails
. Tendrá una importación transitiva de spring-security, pero tal vez no desee la autenticación básica en su servicio.Respuestas:
Lo que también parece funcionar bien es crear un archivo
application-dev.properties
que contenga:Si luego inicia su aplicación Spring Boot con el
dev
perfil, no necesita iniciar sesión.fuente
security.ignored=/**
luego trabajé. stackoverflow.com/a/36280413/3291867En caso de que tenga spring-boot-actuator en su paquete, debe agregar lo siguiente
Con Spring-boot más antiguo, se llamó a la clase
ManagementSecurityAutoConfiguration
.En versiones más recientes esto ha cambiado a
fuente
Si necesita seguridad como dependencia pero no desea que Spring Boot la configure por usted, puede usar esta exclusión:
fuente
Para los usuarios de Spring Boot 2 tiene que ser
fuente
@EnableWebSecurity
anotaciónPara Spring Boot 2, las siguientes propiedades están obsoletas en la configuración de application.yml
Para deshabilitar la seguridad para Sprint Boot 2 Basic + Actuator Security se pueden usar las siguientes propiedades en el archivo application.yml en lugar de la exclusión basada en anotaciones (@EnableAutoConfiguration (exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}))
Para la sintaxis de application.properties sería como
fuente
Paso 1: comentario de anotación @EnableWebSecurity en su configuración de seguridad
Paso 2: agregue esto a su archivo application.properties .
Para obtener más detalles, consulte aquí: http://codelocation.com/how-to-turn-on-and-off-spring-security-in-spring-boot-application/
fuente
Agregue la siguiente clase en su código
Y en el interior de application.properties agregue
fuente
Si está utilizando
@WebMvcTest
anotaciones en su clase de pruebano te ayuda.
Puede deshabilitar la seguridad aquí
fuente
La respuesta es permitir todas las solicitudes en WebSecurityConfigurerAdapter como se muestra a continuación.
puede hacer esto en una clase existente o en una nueva clase.
Tenga en cuenta: si hay una clase GlobalMethodSecurityConfiguration existente, debe deshabilitarla.
fuente
Permitir el acceso a todo con antMatchers ("/")
fuente
Simplemente agregué
security.ignored=/**
elapplication.properties
, y eso hizo el encanto.fuente
Para evitar la seguridad, puede utilizar anotaciones. Utilice esta anotación en la parte superior de la clase de configuración:
Por ejemplo:
fuente
@EnableWebSecurity
deshabilitar la seguridad web?Debe agregar esta entrada a application.properties para omitir Springboot Default Security
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
Entonces no habrá ningún cuadro de autenticación. otrws, las credenciales son: -
user
y99b962fa-1848-4201-ae67-580bdeae87e9
(contraseña generada aleatoriamente)Note: my springBootVersion = '1.5.14.RELEASE'
fuente
Puede configurar para alternar la seguridad de primavera en su proyecto siguiendo los siguientes 2 pasos:
PASO 1: agregue una
@ConditionalOnProperty
anotación en la parte superior de su clase SecurityConfig. Consulte a continuación:PASO 2: Agregue la siguiente configuración a su archivo
application.properties
oapplication.yml
.application.properties
O
application.yml
fuente
Lo único que funcionó para mí:
y
Podría ser que la parte de propiedades sea redundante o se pueda hacer en código, pero no hubo tiempo para experimentar. De todos modos es temporal.
fuente
La forma más fácil de Spring Boot 2 sin dependencias o cambios de código es simplemente:
fuente
Agregue las siguientes líneas a su aplicación principal.
Elimine org.activiti.spring.boot.SecurityAutoConfiguration.class si no está usando activiti.
Del mismo modo, retire el del actuador si no está utilizando spring-boot-actuator.
fuente
Como se mencionó anteriormente, varias soluciones para deshabilitar la seguridad mediante comentarios de
la anotación y otras son a través de propiedades en application.properties o yml. Pero esas propiedades se muestran como obsoletas en la última versión de Spring Boot.
Por lo tanto, me gustaría compartir otro enfoque para configurar el nombre de usuario y la contraseña predeterminados en su application-dev.properties o application-dev.yml y usarlos para iniciar sesión en swagger, etc.en el entorno de desarrollo.
Por lo tanto, este enfoque también le proporcionará algún tipo de seguridad y puede compartir esta información con su equipo de desarrollo. También puede configurar roles de usuario, pero no es necesario en el nivel de desarrollo.
fuente
Agregué la siguiente configuración en application.yml y funcionó bien.
esto se puede convertir como
security.route-paterns-to-be-skipped=/**/*
para application.propertiesfuente