2016-03-29 4 views
22

У меня есть веб-приложение для загрузки весны с настройкой весны. Я хочу временно отключить проверку подлинности (пока это не понадобится).отключение весенней безопасности в весеннем загрузочном приложении

добавить это к application.properties:

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

Вот какая-то часть моего

Но я до сих пор включена базовая безопасность: Существует пароль безопасности по умолчанию генерируется при запуске, и я до сих пор получение окна запроса HTTP-аутентификации.

Мой 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> 

Безопасность конфигурируется в WebSecurityConfig.java (я прокомментировал аннотацию, чтобы отключить его):

//@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

Добавьте более подробную информацию о вашей конфигурации «pom.xml» или «build.gradle», безопасности java и других соответствующих кодах. –

+1

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

ответ

46

Использование security.ignored свойство:

security.ignored=/** 

security.basic.enable: false будет просто отключить какую-то часть из безопасности авто-конфигурации, но ваш WebSecurityConfig все еще будет зарегистрирован.

Существует пароль безопасности по умолчанию генерируется при запуске

Попробуйте AutowiredAuthenticationManagerBuilder:

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

является security.ignored =/** для перехода в класс securityconfig или application.properties? –

+1

Спасибо, «security.ignored =/**» работал. –

9

Я думаю, вы должны также удалить автомобиль безопасности config from your @SpringBootApplication аннотированный класс:

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

Попробуйте это. Сделать новый класс

@Configuration 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

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

} 

В основном это говорит Spring, чтобы разрешить доступ к каждому URL-адресу. @Configuration говорит весной это класс конфигурации

+0

Я получил его, добавив инструкцию exclude для autoconfigure.security и .permitAll() в antMatchers. –

+0

\ @EnableWebSecurity необходимо в \ @EnableWebSecurity защищенный статический класс SecurityConfiguration – Dexter

+0

Вы также можете аннотировать класс, подобный этому, с помощью '@Profile (« nosecure »)', чтобы вы могли указать профиль «nosecure», пока вы не хотите, чтобы он включался. – Mark

0

Использование @profile("whatever-name-profile-to-activate-if-needed") на вашем классе конфигурации безопасности, которая простирается WebSecurityConfigurerAdapter

security.ignored=/** 

security.basic.enable: false 

NB. Мне нужно отлаживать, чтобы узнать, почему почему исключить автоматическую настройку для меня не работало. Но профиль сот настолько плох, что вы можете снова активировать его с помощью свойств конфигурации, если это необходимо.

Смежные вопросы