Implementazione dell'autenticazione e dell'autorizzazione basata sui ruoli di Spring Security con Spring Boot 3.0

May 08 2023
Ciao studenti, qui conosceremo l'implementazione della sicurezza primaverile con l'avvio primaverile. La sicurezza di Spring fornisce autenticazione, autorizzazione e protezione contro gli attacchi comuni.

Ciao studenti, qui conosceremo l'implementazione della sicurezza primaverile con l'avvio primaverile. La sicurezza di Spring fornisce autenticazione, autorizzazione e protezione contro gli attacchi comuni.

Autenticazione: l' autenticazione è il modo in cui verifichiamo l'identità dell'utente che tenta di accedere a una particolare risorsa, una volta eseguita l'autenticazione, conosciamo l'identità e possiamo eseguire l'autorizzazione.

Autorizzazione - Autorizzazione significa dare il permesso di accedere a una particolare risorsa/url.

Passaggi per implementare Spring Security

Passaggio 1: aggiungere la dipendenza Spring Security in POM.XML

Passaggio 2: creare una classe di configurazione, aggiungere metodi di autenticazione e autorizzazione.

@EnableWebSecurity fornisce la configurazione di sicurezza predefinita alla nostra applicazione. La sicurezza predefinita attiva sia i filtri di sicurezza HTTP sia la catena di filtri di sicurezza e applica l'autenticazione di base ai nostri endpoint.

@Configuration indica a Spring Boot di eseguire la scansione della classe per le definizioni dei bean e di registrarle con il contesto dell'applicazione.

Il metodo authenticateProvider() viene utilizzato per memorizzare tutti i dettagli dell'utente come nome utente, password, ruoli. Spring Security contiene la classe DaoAuthenticationProvider che contiene userDetailsService e passwordEncoder.passwordEncoder() viene utilizzato per crittografare la password e la password crittografata viene archiviata nel DB.

Il metodo SecutityFilterChain() è quello di autorizzare le risorse, qui

.requestMatchers("/products/welcome","/products/new").permitAll() serve a dare accesso a tutti gli utenti, qualsiasi utente può accedere a questi due URL.

requestMatchers(“/products/**”).authenticated() serve a dare accesso agli utenti autenticati.

Passaggio 3: implementare l'autorizzazione basata sui ruoli

@PreAuthorizel'annotazione viene utilizzata per specificare un'espressione che verrà valutata prima dell'esecuzione del metodo. Se l'espressione restituisce true, il metodo viene eseguito in caso contrario, viene generata un'eccezione AccessDeniedException.

Il getAllProducts()metodo può essere eseguito solo da utenti con il ROLE_USERruolo, mentre il getProductById()metodo può essere eseguito da utenti con il ROLE_ADMINruolo.

Testare l'implementazione

Aggiunto il codice di esempio per testare l'implementazione.

Dopo aver fornito le credenziali utente, l'utente può accedere all'endpoint utente

Quando l'utente tenta di accedere all'endpoint di amministrazione con le credenziali utente, verrà visualizzata la pagina di errore

Nota: se desideri il codice github funzionante di questa implementazione, seguimi e commenta il tuo ID e-mail. Invierò il link del codice sorgente alla tua email.

Parte 2: Autenticazione e autorizzazione di Spring Security con JWT

Fare riferimento ai collegamenti per altri concetti di Spring Boot:

Tutorial AOP primaverile

Esercitazione sulla registrazione dell'avvio di primavera

Configurazione centralizzata in Spring Boot

Annotazioni Hibernate più comunemente utilizzate

Importanti modelli di progettazione di microservizi per le interviste