web-dev-qa-db-fra.com

Comment dépasser la sécurité d'authentification requise par Spring-boot

J'ai mis le mot de passe qui est "root" et il continue à apparaître. Comment puis-je supprimer cela ou m'en débarrasser? J'utilise botte et sécurité de printemps.

 enter image description here

application.properties

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springbootpractice
spring.datasource.username=root


spring.jpa.database = MYSQL
spring.jpa.show-sql = true

# Hibernate
hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql: true
hibernate.hbm2ddl.auto: update
entitymanager.packagesToScan: /

J'utilise intellij 14 si cela compte.

---- Mise à jour 1 -----

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/", "/index").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/index")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    } 

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/", "/index").permitAll()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin()
                    .loginPage("/index")
                    .permitAll()
                    .and()
                    .logout()
                    .permitAll();
        }

        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth
                    .inMemoryAuthentication()
                    .withUser("user").password("password").roles("USER");
        }
    }

 enter image description here

18
Drew1208

Voici les problèmes

(1) .loginPage ("/ index") disait que ma page de connexion était à index, mais je voulais simplement utiliser la page de connexion par défaut de spring.

(2) devait déplacer le paquet de sécurité à l'intérieur du paquet de démonstration (le paquet principal). Merci à @Sanjay d'avoir suggéré cela. J'ai essayé d'utiliser @ ComponantScan mais il n'a pas pu le faire fonctionner.

0
Drew1208

Cette classe doit être dans un paquet parent de tous les autres paquets: WebSecurityConfig. Aussi dans application.properties set:

security.basic.enabled=false
30
ACV

La réponse d'ACV est probablement le moyen le plus simple de désactiver complètement l'authentification en ajoutant security.basic.enabled=false au fichier application.properties qui se trouve généralement sous le dossier src/main/resources

ou vous tapez simplement le mot de passe :)

1. utiliser le mot de passe par défaut

Lorsque vous exécutez votre application Spring, il y a généralement tout un tas de journalisation imprimée, que les gens ne lisent généralement pas. Le mot de passe est réellement généré et imprimé à l'écran au démarrage. et le nom d'utilisateur est simplement user. Si vous testez à l'aide d'un navigateur et que vous n'avez probablement besoin que de l'entrer une fois et de le mettre en cache, vous devez donc être connecté en toute sécurité, sans vous authentifier à chaque fois. (Cependant, chaque fois que vous redémarrez votre application, un nouveau mot de passe sera généré)

 enter image description here

2. personnaliser votre mot de passe

Ajoutez les propriétés suivantes à votre application.properties si vous souhaitez personnaliser votre nom d'utilisateur et votre mot de passe:

security.user.name=myuser
security.user.password=mypassword

Et voici à quoi ça ressemble avec votre nom d'utilisateur et votre mot de passe

 enter image description here

Référence: 

  1. Fonctionnalités de démarrage du printemps - Sécurité
  2. Surveillance et gestion via HTTP
18
B.Mr.W.

Vous pouvez contourner ce mécanisme de sécurité de démarrage du printemps. Voir un exemple ci-dessous pour cela:

@SpringBootApplication
@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})
public class SampleSpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SampleSpringBootApplication.class, args);
    }
}
3

Lorsque Spring Security est dans le chemin de classe, Spring Boot par défaut sécurise toutes vos pages avec l'authentification de base. C'est pourquoi on vous demande un ID utilisateur et un mot de passe.

Vous devrez configurer la sécurité. Pour ce faire, les gens étendraient généralement une WebSecurityConfigurerAdapter, comme ceci:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            ...

Référez-vous au présent Guide de sécurité du printemps pour plus de détails.

2
Sanjay