English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Projet de configuration Spring security

Spring Framework dans Spring 3.1Dans Spring Security, la prise en charge de la configuration Java a été ajoutée dans Spring Security 3.2Dans laquelle nous pouvons configurer Spring Security Sans avoir à écrire une ligne de XML.

Dans ce cas, nous allons créer un exemple qui implémente Spring Security, sans utiliser de configuration XML. Voici les étapes suivantes :

Étape1

La première étape consiste à créer une configuration Java pour Spring Security. Voici une configuration Java de base simple.

WebSecurityConfig.java

package com.w3codebox;
import org.springframework.context.annotation.*;
//import org.springframework.security.config.annotation.authentication.builders.*;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.*;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@EnableWebSecurity
@ComponentScan("com.w3codebox")
public class WebSecurityConfig implements WebMvcConfigurer {
    
    @Bean
    public UserDetailsService userDetailsService() throws Exception {
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withDefaultPasswordEncoder().username("w3codebox").
        password("java123").roles("USER").build());
        return manager;
    }
    
    protected void configure(HttpSecurity http) throws Exception {
                
        http
        .antMatcher("/)                               
        .authorizeRequests()
            .anyRequest().hasRole("ADMIN")
            .and()
        .httpBasic();
    }
}

Cette configuration crée une configuration appelée springSecurityFilterChain du filtre de Servlet. ResponsableProtéger l'URL de l'application, vérifier le nom d'utilisateur et le mot de passe soumis, rediriger vers le formulaire de connexion, etc.

La configuration Java ci-dessus effectue les opérations suivantes pour notre application.

Exiger l'authentification pour chaque URL Créer un formulaire de connexion Permettre aux utilisateurs d'utiliser l'authentification basée sur le formulaire pour s'authentifier Permettre la déconnexion Prévenir les attaques CSRF l'intégration des en-têtes de sécurité

Étape2

Maintenant, nous allons enregistrer à la guerre springSecurityFilterChain Pour l'enregistrement, Spring Security fournit la classe de base à étendre, AbstractSecurityWebApplicationInitializer.

Pour une application Spring MVC, SecurityWebApplicationInitializer est présentée comme suit.

SecurityWebApplicationInitializer.java

package com.w3codebox;
import org.springframework.security.web.context.*;
public class SecurityWebApplicationInitializer
    extends AbstractSecurityWebApplicationInitializer {
}

Ce code enregistrera springSecurityFilterChain pour chaque URL de notre application.

Étape3

Maintenant, chargez WebSecurityConfig dans notre ApplicationInitializer existant et ajoutez-le à la méthode getRootConfigClasses().

MvcWebApplicationInitializer.java

package com.w3codebox;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MvcWebApplicationInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { WebSecurityConfig.class };
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        // TOdo Auto-méthode de prototype générée
        return null;
    }
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/"};
    }
}

Étape4

WebSecurityConfigurerAdapter La classe fournit une méthode configure(HttpSecurity http) qui contient les configurations par défaut suivantes. Les définitions par défaut sont indiquées comme suit.

protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}

Il est similaire au XML donné.

<http
<intercept-url pattern="/**" access="authenticated"/>
<form-login />
<http-basic />
</http>

Cette méthode effectue les opérations suivantes.

Il assure que chaque demande faite par l'utilisateur nécessite une authentification Il permet à l'utilisateur de s'authentifier en utilisant la connexion de login basée sur le formulaire Il permet à l'utilisateur de s'authentifier en utilisant l'authentification HTTP Basic

Étape5Étape

Créer un contrôleur pour gérer les demandes utilisateur.

HomeController.java

package com.w3codebox.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
    
    @RequestMapping(value="/", method=RequestMethod.GET)
    public String index() {
        
        return "index";
    }
}

Nous avons une page de vue (.jsp) index.jsp contenant le code source suivant.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Page d'accueil</title>
</head>
<body>
Bienvenue à la page d'accueil !
</body>
</html>

Notre projet complet est présenté comme suit.

Sortie:

Nous avons une seule action dans le contrôleur, et seuls les utilisateurs authentiques peuvent y accéder. Par conséquent, lorsque nous exécutons l'application, elle vous demande de saisir les informations de connexion. La sortie est donnée ci-dessous.

C'est Page de connexion par défaut fournie par Spring SecurityPage, nous ne l'avons pas créée. Bien que nous puissions créer notre propre page de connexion et configurer l'application. Nous en parlerons dans le prochain sujet.

Maintenant, fournissez les informations de connexion pour accéder aux ressources de l'application. Spring Security vérifie les informations de connexion et assure l'authenticité de l'utilisateur.

Voyons ce qui se passe ? Si nous entrons des informations de connexion incorrectes.

Un événement est déclenché après avoir cliqué sur le bouton de connexion Mauvaises informations de connexion (Informations de connexion incorrectes) erreur.

Maintenant, utilisez Connexion avec les informations correctes./strong>

Ces informations de connexion correspondent et affichent la page d'accueil (index.jsp).