Quiero usar Spring Security para JWT autenticación. Pero viene con la autenticación predeterminada. Estoy tratando de desactivar, pero el viejo enfoque de hacerlo – la inhabilitación a través de application.properties – está en desuso en la 2.0.

Esto es lo que he intentado:

@Configuration
public class StackWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().disable();
        //http.authorizeRequests().anyRequest().permitAll(); //Also doesn't work.
    }
}

¿Cómo puedo deshabilitar simplemente básicas de seguridad?

ACTUALIZACIÓN

Sería bueno saber que no estoy utilizando web mvc, pero en la web de flujo.

Captura de pantalla:

La primavera de Arranque 2.0 defecto desactivar la seguridad

  • Trató de excluir el paquete como se puede ver aquí
  • Sí he intentado. Sólo puedo desactivar mediante la eliminación de la totalidad de la dependencia..
  • Podrías explicar un poco más? Lo que está ahora asegurado que no estaba anteriormente? ¿Cuál es su configuración de seguridad? ¿Podría dar un ejemplo de solicitud+de respuesta?
  • Por el momento es sólo una aplicación vacía, sólo quiero usar la primavera de seguridad sin la autenticación básica. Puede duplicar la creación de un resorte de inicio de web 2.0, aplicación y uso @EnableWebFlux.
  • La adición de @EnableWebFlux efectivamente desactiva todos los WebFlux de auto-configuración. Es que lo que va a hacer?
  • No siento que espera que @EnableWebFlux permitiría webflux… Pero veo que al quitar el servidor web todavía está iniciado, pero la seguridad básica todavía está habilitado.

InformationsquelleAutor Jan Wytze | 2017-11-13

7 Comentarios

  1. 32

    De acuerdo con las nuevas actualizaciones en la Primavera 2.0, si la Primavera la Seguridad está en el classpath, Spring Boot le agregue @EnableWebSecurity.Para agregar entradas a la aplicación.propiedades no va a trabajar (me.e no es más personalizable de esa manera). Para obtener más información, visite el sitio web oficial Los cambios de seguridad en la Primavera de Arranque 2.0

    Aunque no está seguro acerca de su requisito exactamente, yo podría pensar en una solución similar a la siguiente:-

    @Configuration
    @EnableWebSecurity
    public class SecurityConfiguration  extends WebSecurityConfigurerAdapter{
        @Override
        protected void configure(HttpSecurity http) throws Exception{
            http.authorizeRequests().antMatchers("/").permitAll();
        }
    }
    

    Espero que esto ayude.

    • Esta pregunta es acerca de la configuración de seguridad en la Primavera de Arranque para la Primavera WebFlux; @EnableWebSecurity es para Spring MVC.
    • cuando he contestado a esta pregunta, esta actualización acerca de WebFlux no estaba allí, supongo.
    • Esto funcionó para mí en la primavera de arranque 2.1.3
    • BrianClozel, ¿cómo deshabilitar @EnableWebSecurity. Parece ser que hay por defecto y evita que mi solicitud de inicio cuando defino reactiva spring security
    • OMI esto realmente no es mejor que sólo la eliminación de la primavera de la seguridad de la dependencia de la ruta de clase. Sería mejor si los «http.httpBasic().desactivar().formLogin().disable();» efectivamente trabajado. La documentación dice que «la Primavera de Arranque ahora tiene un único comportamiento que se retira tan pronto como usted añada su propio WebSecurityConfigurerAdapter.» pero que parece ser una declaración falsa. Tengo un WebSecurityConfigurerAdapter así como «de http.httpBasic().desactivar().formLogin().disable();» y todavía tengo que estúpido primavera página de inicio de sesión. su exasperante.
    • De arranque ahora tiene un único comportamiento que se retira tan pronto como usted añada su propio WebSecurityConfigurerAdapter.» – esta declaración es toda la verdad. Cualquier auto de la función de configuración de Spring boot no es invasivo, es decir, se va a volver una vez que usted agregue su propia configuración. La desactivación de formLogin() no te permite acceder a extremos sin id de usuario, contraseña, en lugar deshabilita/quita el formulario de autenticación basado en la funcionalidad.docs.de la primavera.io/primavera-seguridad/sitio/docs/4.2.11.RELEASE/apidocs/…
    • Sí entiendo que tengo mi propio auth proveedor que se encarga de la autenticación, por lo que no hay necesidad de que el formulario de inicio de sesión o basic auth. Agregando los deshabilitar las llamadas se debería dejar que me bloqueo y en realidad la espalda, no sigan apareciendo y evitar que mi auth proveedor de hacer su trabajo.
    • podrías pegar el fragmento de código? Voy a tratar de ayudarte, si puedo. ¿Tienes alguna web de proveedor de autenticación o cualquier cosa de ese tipo en su archivo de configuración?

  2. 8

    Esto funcionó para mí:

    @Configuration
    public class SecurityConfig  extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable().authorizeRequests().anyRequest().permitAll();
        }
    }
    
  3. 4

    A partir de la Primavera de Arranque 2.1, si usted se encuentra spring-boot-actuador, no basta ya que sólo se excluyen SecurityAutoconfiguration, también es necesario excluir ManagementWebSecurityAutoConfiguration, así:

    @SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
    
    • Gracias! La sugerencia en esta respuesta trabajado, dependiendo del curso de la Primavera de la versión de Arranque (en mi caso 2.1.5).
    • Mientras yo estoy usando la @EnableWebSecurity anotación, esta respuesta no me funciona (Primavera de Arranque 2.1.5, primavera-seguridad-web 4.2.3.La LIBERACIÓN). ¿Tiene que hacer nada más?
    • Si desea excluir de Autoconfiguración creo que usted no será capaz de utilizar @EnableWebSecurity y usted tendrá que configurar el resorte requerida de seguridad frijoles a sí mismo como en un plano de Primavera/sin Resorte de arranque.
    • La manera más fácil. Gracias
  4. 1

    Creo que lo que usted está buscando para reemplazar el valor predeterminado de autenticación del punto de entrada que se establece en BasicAuthenticationEntryPoint.

    Este punto de entrada se agrega la

    «WWW-Authenticate»: «Basic realm=…»

    encabezado que dice tu navegador para usar Basic Auth.

    • Con firefox no tengo el encabezado, sino a través de una herramienta de solicitud de recibo de ti.
  5. 0

    En la Primavera de arranque 2, no hay manera de desactivar la autenticación básica de la aplicación.archivo de propiedades. Pero la única cosa es utilizar la anotación

    @EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})

    en la clase principal.
    Funciona

    • Yo era incapaz de conseguir que esto funcione. (Primavera de Arranque 2.1.5, primavera-seguridad-web 4.2.3.LIBERACIÓN, primavera-arranque-motor de arranque-actuador). ¿Tiene que hacer nada más?
  6. 0

    La adición de algunos frescos respuesta, supongo que todo el uso del actuador, si no me apostaría una clase de exclusión debe ser suficiente, me las arreglé para deshabilitar a través de las propiedades:

    spring:
      autoconfigure:
        exclude: ${spring.autoconfigure.sac}, ${spring.autoconfigure.mwsas}
        sac: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
        mwsas: org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
    

    He referencia a dos de configuración automática de clases a través de la propiedad para mantener la longitud intacta (tenga en cuenta que IntelliJ Final va a llorar si usted referencia que como no tiene ni idea de lo que son estos valores de marcador de posición y, si en realidad son de fiar clases, por lo que en línea si que molesta).

    Aplicación, sin embargo no deja de inicio, como lo afirma:

    https://www.baeldung.com/spring-boot-security-autoconfiguration

    si usted sólo tiene que desactivar SecurityAutoConfiguration

    Si lo hizo el trabajo, usted va a dejar de ver la contraseña generada automáticamente y es un poco menos confuso que el aceptado la respuesta, como dev lectura del registro no se confunde por contraseña para la autentificación básica, mientras que la seguridad lo permite todo.

    ¿Por qué simplemente desactivar principal de configuración automática de clase no es suficiente, es porque de este chico:

    @Configuration
    class ManagementWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
                    .requestMatchers(
                            EndpointRequest.to(HealthEndpoint.class, InfoEndpoint.class))
                    .permitAll().anyRequest().authenticated().and().formLogin().and()
                    .httpBasic();
        }
    
    }
    

    Había un montón de trabajo hecho a la división del actuador y de seguridad de configuración que nos confunde a todos, ahora es más sencillo, pero los artefactos como estos existen. La primavera devs se me corrija si me equivoco :-).

  7. 0

    El problema es con org.springframework.de seguridad.web.servidor.autorización.ExceptionTranslationWebFilter

    ha private ServerAuthenticationEntryPoint authenticationEntryPoint = new HttpBasicServerAuthenticationEntryPoint();

    para solucionarlo durante ServerHttpSecurity de inicialización agregar:

    http.exceptionHandling().authenticationEntryPoint(HttpStatusServerEntryPoint(HttpStatus.FORBIDDEN))
    

    Se parece a la vainilla (servlet) primavera utiliza org.springframework.security.config.annotation.web.configurers.ExceptionHandlingConfigurer#createDefaultEntryPoint

    private AuthenticationEntryPoint createDefaultEntryPoint(H http) {
            if (this.defaultEntryPointMappings.isEmpty()) {
                return new Http403ForbiddenEntryPoint();
            }
            if (this.defaultEntryPointMappings.size() == 1) {
                return this.defaultEntryPointMappings.values().iterator().next();
            }
            DelegatingAuthenticationEntryPoint entryPoint = new DelegatingAuthenticationEntryPoint(
                    this.defaultEntryPointMappings);
            entryPoint.setDefaultEntryPoint(this.defaultEntryPointMappings.values().iterator()
                    .next());
            return entryPoint;
        }
    

    Lado nota: los campos en el generador de estilo frijoles (como ExceptionTranslationWebFilter) hacer de la primavera de código duro para depurar (demasiado magia de configuración)

Dejar respuesta

Please enter your comment!
Please enter your name here