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

Spring Security Konfigurationsprojekt

Spring Framework in Spring 3.1Hinzugefügt wurde Java-Konfigurationsunterstützung. In Spring Security wurde die Java-Konfiguration hinzugefügt 3.2In dem, in dem wir Spring Security konfigurieren können Ohne Zeile XML zu schreiben.

Hier erstellen wir ein Beispiel, das Spring implementiert. Sicherheit und ohne XML konfiguriert. Es umfasst die folgenden Schritte.

Schritt1

Der erste Schritt ist die Erstellung einer Spring Security Java-Konfiguration. Unten ist eine einfache grundlegende Java-Konfiguration gegeben.

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();
    }
}

Diese Konfiguration erstellt eine als springSecurityFilterChain für den Servlet-Filter. verantwortlichSchützen Sie die URL der Anwendung, überprüfen Sie die übermittelten Benutzernamen und Passwörter, leiten Sie weiter zur Loginmaske usw.

Die obige Java-Konfiguration führt für unsere Anwendung folgende Maßnahmen aus.

Authentifizierung für jeden URL verlangen Anmeldeformular erstellen Authentifizierung durch Formularauthentifizierung ermöglichen Abmeldung ermöglichen CSRF-Angriffe verhindern sichere Titelintegrationen usw.

Schritt2

Nun registrieren wir springSecurityFilterChain . Um sich zu registrieren, bietet Spring Security die Basisklasse AbstractSecurityWebApplicationInitializer an, die wir erweitern müssen.

Für Spring MVC-Anwendungen sieht SecurityWebApplicationInitializer wie folgt aus.

SecurityWebApplicationInitializer.java

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

Dieser Code registriert für jeden URL unserer Anwendung die springSecurityFilterChain.

Schritt3

Nun laden wir WebSecurityConfig in unseren bestehenden ApplicationInitializer und fügen es der Methode getRootConfigClasses() hinzu.

MvcWebApplicationInitializer.java

package com.w3codebox;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MvcWebApplicationInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    geschützte Class<?[]> getRootConfigClasses() {
        return new Class[] { WebSecurityConfig.class };
    }
    @Override
    geschützte Class<?[]> getServletConfigClasses() {
        // TOdo Auto-generierter Methodenstub
        return null;
    }
    @Override
    protected String[] getServletMappings() {
        return new String[] { "/"};
    }
}

Schritt4

WebSecurityConfigurerAdapter Die Klasse bietet eine Methode configure(HttpSecurity http), die folgende Standardkonfiguration enthält. Die Standarddefinition ist wie folgt.

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

Es ähnelt dem angegebenen XML.

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

Diese Methode führt folgende Aktionen aus.

Es stellt sicher, dass jede von den Benutzern vorgeschlagene Anfrage eine Authentifizierung erfordert Es ermöglicht den Benutzern, sich über Formular-Login zu authentifizieren Es ermöglicht den Benutzern, sich über HTTP Basic-Authentifizierung zu authentifizieren

Schritt5Schritt

Erstellen Sie einen Controller, um Benutzeranfragen zu verarbeiten.

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";
    }
}

Wir haben eine View (.jsp) Seite index.jsp mit folgendem Quellcode.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home Page</title>
</head>
<body>
Willkommen auf der Startseite!
</body>
</html>

Unser vollständiges Projekt sieht wie folgt aus.

Ausgabe:

Wir haben im Controller nur eine Aktion und nur echter Benutzer kann darauf zugreifen. Daher wird der Anwendung beim Ausführen angezeigt, dass Sie Anmeldedaten eingeben müssen. Die Ausgabe ist unten gezeigt.

Dies ist Standardanmeldeseite, die von Spring Security bereitgestellt wirdSeite, die wir nicht erstellt haben. Obwohl wir unsere eigene Anmeldeseite erstellen und die Anwendung konfigurieren können. Dies werden wir im nächsten Thema tun.

Jetzt, geben Sie die Anmeldedaten ein, um auf die Anwendungsressourcen zuzugreifen. Spring Security überprüft die Benutzeranmeldedaten und stellt die Echtheit des Benutzers sicher.

Lassen Sie uns sehen, was passiert? Wenn wir falsche Anmeldedaten eingeben.

NachdemSie auf die Anmelde Taste geklickt haben, wird FalscheAnmeldedaten (FalscheAnmeldedaten)Fehler.

Jetzt,verwenden RichtigeAnmeldedatenangemeldet./strong>

DieseAnmeldungpasstundzeigenSiedieStartseite(index.jsp).