désactivation de la sécurité printemps au printemps de démarrage de l'app
J'ai un ressort de démarrage application web avec spring security configuré. Je veux désactiver l'authentification pour un certain temps (jusqu'à ce que nécessaire).
Je l'ajouter à la application.properties
:
security.basic.enable: false
management.security.enabled: false
Voici une partie de mon
Mais j'ai toujours une sécurité de base inclus : Il y a un défaut de sécurité du mot de passe généré au démarrage et je suis encore en train d'Authentification HTTP boîte de message d'invite.
Mon 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 sécurité est configuré dans WebSecurityConfig.java (j'ai commenté à l'annotation de le désactiver) :
//@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);
}
}
}
- Ajouter plus de détails, votre
pom.xml
oubuild.gradle
, de sécurité java config et d'autres codes pertinents - stackoverflow.com/questions/23894010/...
Vous devez vous connecter pour publier un commentaire.
Utilisation
security.ignored
propriété:security.basic.enable: false
va, il suffit de désactiver une partie de la sécurité de l'auto-configurations, mais votreWebSecurityConfig
seront toujours enregistrés.Essayer de
Autowired
laAuthenticationManagerBuilder
:application.properties
est obsolète. Essayez de stackoverflow.com/a/47292134/2443988De l'essayer. Une nouvelle classe
En gros, cela dit Printemps pour permettre l'accès à tous les url.
@Configuration
dit printemps c'est une classe de configuration@Profile("nosecure")
de sorte que vous pouvez spécifier le profil "nosecure" jusqu'à ce que vous voulez qu'il allumé.Je pense que vous devez également supprimer de sécurité auto config de votre
@SpringBootApplication
annoté de la classe:de sécurité.ignoré, c'est obsolète depuis le Printemps de Démarrage 2.
Pour moi simplement étendre l'Annotation de votre classe d'Application a fait le tour:
Avec cette solution, vous pouvez activer/désactiver la sécurité par l'activation d'un profil spécifique par ligne de commande. J'ai défini un profil dans un fichier
application-nosecurity.yaml
Puis j'ai modifié mon custom
WebSecurityConfigurerAdapter
par l'ajout de la@Profile("!nosecurity")
comme suit:De désactiver complètement la sécurité, il suffit de démarrer l'application en spécifiant le nosecurity profil, c'est à dire:
Depuis de sécurité.désactiver l'option d'interdiction de l'utilisation il y a toujours un moyen de l'atteindre à partir de pur config sans toucher n'importe quelle classe de mouches (pour moi, il crée la commodité avec des environnements de manipulation et la possibilité de l'activer avec ENV variable) si vous utilisez Boot
C'était la seule chose qui a fonctionné pour moi, j'ai ajouté l'annotation suivante à ma Demande de classe et d'exclure SecurityAutoConfiguration
Utilisation
@profile("whatever-name-profile-to-activate-if-needed")
sur votre configuration de sécurité de classe qui étend la classeWebSecurityConfigurerAdapter
NB. J'ai besoin de déboguer savoir pourquoi pourquoi exclure de la configuration automatique ne fonctionne pas pour moi. Mais le profil est sot si mauvais que vous pouvez toujours re-activer via les propriétés de configuration si nécessaire
Vous pouvez simplement commenter la dépendance maven pour un certain temps:
Il a bien fonctionné pour moi
Il suffit d'ajouter la ligne suivante pour désactiver le printemps de configuration automatique dans l'application.fichier de propriétés
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
il fonctionne sur le printemps 2.0.5 🙂
Accepté la réponse n'a pas fonctionné pour moi.
Si vous avez un multi de configuration, ajouter ce qui suit à votre WebSecurityConfig classe a travaillé pour moi (s'assurer que votre Commande(1) est inférieur à tous les autres Afin d'annotations dans la classe):