Spring Security zum Sichern einer Webanwendung

Das Spring Boot-Framework enthält ein Modul namens Spring Security. Es hilft, Webanwendungsressourcen mit minimaler Codierung vor unbefugtem Zugriff zu schützen.


Es bietet Authentifizierung, Autorisierung und viele andere Funktionen für einfache Anwendungen auf Unternehmensebene. Wenn die Authentifizierung erfolgreich ist, wird auf die Ressource zugegriffen. Andernfalls ist der Benutzer eingeschränkt.

Die Spring Security ist eine offene Plattform. Für einen Entwickler ist es ganz einfach, seinen eigenen Authentifizierungsmechanismus zu schreiben. Viele Entwickler, die Spring Security verwenden, müssen es in ihre eigenen Systeme integrieren, die keinen bestimmten Sicherheitsstandards entsprechen. In diesem Fall ist Spring Security flexibel für die Integration.

Voraussetzungen

  • Eine IDE für z.B. IntelliJ IDEE
  • JDK 1.8 oder höher
  • Eine Spring MVC-Anwendung mit Anmeldeformular mit einer Liste autorisierter Benutzer.
  • Ein Build-System von Gradle 4 oder höher oder Maven 3.2 oder höher

Schritt 1: Aktualisieren Sie build.gradle oder POM.xml

Für das Gradle-Build-System müssen Sie eine Abhängigkeit hinzufügen, damit Spring Security funktioniert. Der Code, den Sie unter “Abhängigkeiten” hinzufügen müssen

Abhängigkeiten {
kompilieren("org.springframework.boot: Spring-Boot-Starter-Sicherheit")
}}

Wenn Ihr Projekt das Maven-Buildsystem verwendet, fügen Sie die folgende Codezeile im Abschnitt in POM.xml hinzu

org.springframework.boot
Spring-Boot-Starter-Sicherheit

Schritt 2: Legen Sie die Sicherheitskonfiguration in der Anwendung fest

In diesem Schritt erstellen Sie eine Konfigurationsklasse. Es wird durch WebSecurityConfigurerAdapter erweitert und Sie überschreiben die Methoden configure () und userDetailsService (). Die configure () -Methode enthält Code für zwei Arten von Anwendungspfaden, für die die Sicherheit erforderlich ist und für die keine Sicherheit erforderlich ist.

Die userDetailsService () -Methode wird zum Speichern eines speicherinternen Benutzers verwendet. Ein Benutzer kann mithilfe der in dieser Methode codierten Anmeldeinformationen autorisieren.

Im Folgenden finden Sie die vollständige Konfigurationsdatei mit dem Namen WebSecurityConfiguration.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Aufbau
@EnableWebSecurity
öffentliche Klasse WebSecurityConfig erweitert WebSecurityConfigurerAdapter {
@Override
protected void configure (HttpSecurity http) löst eine Ausnahme aus {
http
.authorizeRequests ()
.antMatchers ("/.", "/Main") .permitAll ()
.anyRequest (). authenticated ()
.und()
.formLogin ()
.Loginseite("/Benutzer-Anmeldung")
.allowAll ()
.und()
.Ausloggen()
.allowAll ();
}}

@Bohne
@Override
public UserDetailsService userDetailsService () {
UserDetails user =
User.withDefaultPasswordEncoder ()
.Nutzername("Benutzer")
.Passwort("Passwort")
.Rollen ("BENUTZER")
.bauen();
neuen InMemoryUserDetailsManager (Benutzer) zurückgeben;
}}
}}

Das "/." und "/Main" Pfade sind so konfiguriert, dass keine Authentifizierung erforderlich ist. Alle anderen Pfade müssen authentifiziert werden.

Bei der userDetailsService () -Methode wird ein speicherinterner Benutzerspeicher mit einem einzelnen Benutzer eingerichtet. Dieser Benutzer erhält einen Benutzernamen von "Benutzer", ein Passwort von "Passwort", und eine Rolle von "BENUTZER".

Schritt 4: Erstellen Sie ein Anmeldeformular, um auf Ihre Webanwendung zuzugreifen

Nachdem die Sicherheit auf den Pfad der Anwendung angewendet wurde, ist es Zeit zu sehen, wie sie funktionieren. Sie erstellen eine Anmeldeseite, die den Benutzernamen und das Kennwort enthält und an die Haupt-URL sendet, die die Einstiegsseite für die Anwendung darstellt. Wenn die Anmeldeinformationen korrekt sind, kann der Benutzer auf eine beliebige URL der Anwendung zugreifen. Unten finden Sie eine einfache Anmeldeseite, die im HTML-Code erstellt wurde. Die Datei ist main.html.

Hauptseite

Herzlich willkommen

Nutzername :
Passwort:

Benutzername oder Passwort sind falsch, Sie sind nicht berechtigt, sich anzumelden. Vielen Dank.

Das Formular in der obigen Datei sendet Benutzername und Passwort an die URL main. Nach der Übermittlung wird Spring Security aktiv und führt die entsprechende Aktion basierend auf den Anmeldeinformationen aus.

Sie fügen diese HTML-Ansicht der MVC-Controller-Klasse hinzu, um sie der Funktion zuzuordnen.

public void addViewControllers (ViewControllerRegistry-Registrierung) {
registry.addViewController ("/Main") .setViewName ("Zuhause");
}}

Schritt 4: Testen Sie die Funktion

Beim Zugriff auf die Haupt-URL erhält ein Benutzer die folgende Seite.

Nach erfolgreicher Anmeldung kann der Benutzer auf alle Ressourcen (URLs) der Anwendung zugreifen.

Fazit

Um Spring Security in Ihrer Spring Boot-Anwendung zu aktivieren, müssen Sie die Abhängigkeit je nach verwendetem Build-System in die POM- oder build.gradle-Datei des Projekts einfügen. Dann müssen Sie eine Konfigurationsdatei erstellen. Es enthält URLs, die authentifiziert werden müssen und nicht. Anschließend benötigen Sie eine Anmeldeseite, um die Anmeldeinformationen an Spring Security zu senden, damit dieser entscheiden kann, ob sich der Benutzer anmelden darf oder nicht. Sie müssen die Anmeldeseite zum Controller der Anwendung hinzufügen.

Schauen Sie sich diese Top 3 Java-Hosting-Services an:

A2 Hosting

Startpreis:
$ 3,92


Verlässlichkeit
9.3


Preisgestaltung
9.0


Benutzerfreundlich
9.3


Unterstützung
9.3


Eigenschaften
9.3

Bewertungen lesen

Besuchen Sie A2 Hosting

Heficed

Startpreis:
$ 15.00


Verlässlichkeit
8.3


Preisgestaltung
8.7


Benutzerfreundlich
8.5


Unterstützung
8.3


Eigenschaften
8.5

Bewertungen lesen

Besuchen Sie Heficed

HostUpon

Startpreis:
2,95 $


Verlässlichkeit
9.4


Preisgestaltung
8.8


Benutzerfreundlich
9.1


Unterstützung
9.4


Eigenschaften
9.0

Bewertungen lesen

Besuchen Sie HostUpon

Verwandte Anleitungen

  • So erstellen Sie eine dynamische Webanwendung mit Django
    Experte
  • So installieren Sie Apache Cassandra auf einem Ubuntu 18.04 VPS oder einem dedizierten Server
    mittlere
  • So installieren Sie Java unter CentOS 7?
    mittlere
  • So installieren und konfigurieren Sie Apache Tomcat auf einem Ubuntu 18.04 VPS oder einem dedizierten Server
    mittlere
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me