2016-03-29 37 views
22

Ho un'app web di avvio a molla con la sicurezza a molla configurata. Voglio disabilitare l'autenticazione per un po '(fino a quando necessario).disabilitazione della sicurezza a molla nell'app di avvio a molla

ho aggiungere questo al application.properties:

security.basic.enable: false 
management.security.enabled: false 

Ecco una parte della mia

Ma ho ancora una sicurezza di base inclusi: C'è una password di sicurezza predefinito generato all'avvio e io sono ancora ottenere la finestra di richiesta di autenticazione HTTP.

mio pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>fr.test.sample</groupId> 
    <artifactId>navigo</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 

    <!-- Inherit defaults from Spring Boot --> 
    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.1.RELEASE</version> 
    </parent> 

    <properties> 
     <java.version>1.7</java.version> 
     <jsoup.version>1.8.3</jsoup.version> 
     <guava.version>18.0</guava.version> 
     <postgresql.version>9.3-1103-jdbc41</postgresql.version> 
    </properties> 

    <!-- Add typical dependencies for a web application --> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-mail</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.velocity</groupId> 
      <artifactId>velocity</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 
     <dependency> 
      <groupId>org.jsoup</groupId> 
      <artifactId>jsoup</artifactId> 
      <version>${jsoup.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>${guava.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      </dependency> 
    </dependencies> 

    <!-- Package as an executable jar --> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

    <!-- Add Spring repositories --> 
    <!-- (you don't need this if you are using a .RELEASE version) --> 
    <repositories> 
     <repository> 
      <id>spring-snapshots</id> 
      <url>http://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <url>http://repo.spring.io/milestone</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <url>http://repo.spring.io/snapshot</url> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <url>http://repo.spring.io/milestone</url> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 

La sicurezza è configurata in WebSecurityConfig.java (Ho commentato l'annotazione per disabilitarlo):

//@Configuration 
//@EnableWebSecurity 
//@EnableGlobalMethodSecurity(prePostEnabled = true) 
//@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Autowired 
    UserDetailsService userDetailsService; 

    @Autowired 
    UserService userService; 

    @Autowired 
    private DataSource datasource; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     // http.authorizeRequests().antMatchers("/bus/topologie", "/home") 
     // http.authorizeRequests().anyRequest().authenticated() 
     // .antMatchers("/admin/**").access("hasRole('ADMIN')").and() 
     // .formLogin().failureUrl("/login?error") 
     // .defaultSuccessUrl("/bus/topologie").loginPage("/login") 
     // .permitAll().and().logout() 
     // .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) 
     // .logoutSuccessUrl("/login").permitAll().and().rememberMe() 
     // .rememberMeParameter("remember-me") 
     // .tokenRepository(persistentTokenRepository()) 
     // .tokenValiditySeconds(86400).and().csrf(); 
    } 

    @Bean 
    public PersistentTokenRepository persistentTokenRepository() { 
     JdbcTokenRepositoryImpl tokenRepositoryImpl = new JdbcTokenRepositoryImpl(); 
     tokenRepositoryImpl.setDataSource(datasource); 
     return tokenRepositoryImpl; 
    } 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) 
      throws Exception { 

     PasswordEncoder encoder = new BCryptPasswordEncoder(); 

     auth.userDetailsService(userDetailsService).passwordEncoder(encoder); 
     auth.jdbcAuthentication().dataSource(datasource); 

     if (!userService.userExists("user")) { 
      User userAdmin = new User("user", encoder.encode("password"), true); 
      Set<Authorities> authorities = new HashSet<Authorities>(); 
      authorities.add(new Authorities(userAdmin,"ADMIN")); 
      authorities.add(new Authorities(userAdmin,"CRIP")); 
      authorities.add(new Authorities(userAdmin,"USER")); 
      userAdmin.setAuthorities(authorities); 

      userService.createUser(userAdmin); 
     } 
    } 

} 
+0

Aggiungere ulteriori dettagli, il tuo 'pom.xml' o' build.gradle', sicurezza java config e altri codici rilevanti –

+1

http: //stackoverflow.com/questions/23894010/spring-boot-security-disable-security – soorapadman

risposta

46

Uso security.ignored proprietà:

security.ignored=/** 

security.basic.enable: false sarà solo disabilitare una parte delle auto-configurazioni di sicurezza, ma la vostra WebSecurityConfig ancora saranno registrati.

C'è una password di sicurezza predefinito generato all'avvio

Provate a Autowired il AuthenticationManagerBuilder:

@Override 
@Autowired 
protected void configure(AuthenticationManagerBuilder auth) throws Exception { ... } 
+0

security.ignored =/** per andare nella classe securityconfig o application.properties? –

+1

Grazie, "security.ignored =/**" ha funzionato. –

9

Credo che è necessario rimuovere anche auto di sicurezza config dalla tua classe annotata @SpringBootApplication:

@EnableAutoConfiguration(exclude = { 
    org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class, 
    org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class}) 
7

Prova questo. Crea una nuova classe

@Configuration 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity httpSecurity) throws Exception { 
     httpSecurity.authorizeRequests().antMatchers("/").permitAll(); 
} 

} 

Fondamentalmente questo indica a Spring di consentire l'accesso a ogni URL. @Configuration dice la primavera è una classe di configurazione

+0

Ho capito di andare aggiungendo entrambe le istruzioni exclude per autoconfigure.security e .permitAll() su antMatchers. –

+0

\ @EnableWebSecurity è necessario nella classe statica protetta \ @EnableWebSecurity SecurityConfiguration – Dexter

+0

È anche possibile annotare una classe come questa con qualcosa come '@Profile (" nosecure ")' in modo da poter specificare il profilo "nosecure" finché non si voglio che sia acceso. – Mark

0

Uso @profile("whatever-name-profile-to-activate-if-needed") sulla classe di configurazione di sicurezza che si estende WebSecurityConfigurerAdapter

security.ignored=/** 

security.basic.enable: false 

NB. Devo eseguire il debug per sapere perché, perché la configurazione automatica di esclusione non ha funzionato per me. Ma il profilo è tanto peggiore in quanto è ancora possibile riattivarlo tramite le proprietà di configurazione, se necessario

Problemi correlati