Spring Security rollenbasierte Authentifizierungs- und Autorisierungsimplementierung mit Spring Boot 3.0

May 08 2023
Hallo Lernende, hier erfahren Sie mehr über die Spring Security-Implementierung mit Spring Boot. Spring Security bietet Authentifizierung, Autorisierung und Schutz vor gängigen Angriffen.

Hallo Lernende, hier erfahren Sie mehr über die Spring Security-Implementierung mit Spring Boot. Spring Security bietet Authentifizierung, Autorisierung und Schutz vor gängigen Angriffen.

Authentifizierung – Bei der Authentifizierung überprüfen wir die Identität des Benutzers, der versucht, auf eine bestimmte Ressource zuzugreifen. Sobald die Authentifizierung durchgeführt ist, kennen wir die Identität und können die Autorisierung durchführen.

Autorisierung - Autorisierung bedeutet, die Erlaubnis zum Zugriff auf bestimmte Ressourcen/URLs zu erteilen.

Schritte zur Implementierung von Spring Security

Schritt 1: Spring Security-Abhängigkeit in POM.XML hinzufügen

Schritt 2: Erstellen Sie eine Konfigurationsklasse, fügen Sie Authentifizierungs- und Autorisierungsmethoden hinzu.

@EnableWebSecurity bietet unserer Anwendung eine Standardsicherheitskonfiguration. Die Standardsicherheit aktiviert sowohl HTTP-Sicherheitsfilter als auch die Sicherheitsfilterkette und wendet die Basisauthentifizierung auf unsere Endpunkte an.

@Configuration weist Spring Boot an, die Klasse nach Bean-Definitionen zu durchsuchen und sie im Anwendungskontext zu registrieren.

Die Methode authenticateProvider() wird verwendet, um alle Benutzerdetails wie Benutzername, Passwort, Rollen zu speichern.Spring Security enthält die Klasse DaoAuthenticationProvider, die userDetailsService und passwordEncoder enthält.passwordEncoder() wird verwendet, um das Passwort zu verschlüsseln, und das verschlüsselte Passwort wird in der DB gespeichert.

Die Methode SecutityFilterChain() soll hier die Ressourcen autorisieren

.requestMatchers("/products/welcome","/products/new").permitAll() soll allen Benutzern Zugriff gewähren, jeder Benutzer kann auf diese beiden URLs zugreifen.

requestMatchers(“/products/**“).authenticated() soll authentifizierten Benutzern Zugriff gewähren.

Schritt 3: Implementieren Sie die rollenbasierte Autorisierung

@PreAuthorizeAnnotation wird verwendet, um einen Ausdruck anzugeben, der ausgewertet wird, bevor die Methode ausgeführt wird. Wenn der Ausdruck als wahr ausgewertet wird, wird die Methode ausgeführt, andernfalls wird eine AccessDeniedException geworfen.

Die getAllProducts()Methode kann nur von Benutzern mit der Rolle ausgeführt werden ROLE_USER, während die getProductById()Methode von Benutzern mit der Rolle ausgeführt werden kann ROLE_ADMIN.

Testen der Implementierung

Beispielcode hinzugefügt, um die Implementierung zu testen.

Nach Angabe der Benutzeranmeldeinformationen kann der Benutzer auf den Benutzerendpunkt zugreifen

Wenn Benutzer versuchen, mit Benutzeranmeldeinformationen auf den Admin-Endpunkt zuzugreifen, wird eine Fehlerseite angezeigt

Hinweis: Wenn Sie den funktionierenden Github-Code dieser Implementierung wünschen, folgen Sie mir bitte und kommentieren Sie Ihre E-Mail-ID. Ich werde den Quellcode-Link an Ihre E-Mail senden.

Teil 2: Spring Security-Authentifizierung und -Autorisierung mit JWT

Siehe Links für andere Spring Boot-Konzepte:

Frühlings-AOP-Tutorial

Tutorial zur Spring Boot-Protokollierung

Zentralisierte Konfiguration in Spring Boot

Am häufigsten verwendete Hibernate-Anmerkungen

Wichtige Microservices-Entwurfsmuster für Interviews