Introduzione a Spring Security Taglibs

1. Panoramica

In questo tutorial daremo uno sguardo a Spring Security Taglibs, che fornisce supporto di base per l'accesso alle informazioni di sicurezza e l'applicazione dei vincoli di sicurezza nei JSP.

2. Dipendenze di Maven

Innanzitutto aggiungiamo la dipendenza spring-security-taglibs al nostro pom.xml :

 org.springframework.security spring-security-taglibs 5.2.2.RELEASE 

3. Dichiarare i Taglibs

Ora, prima di poter utilizzare i tag, dobbiamo importare il taglib nella parte superiore del nostro file JSP:

Dopo averlo aggiunto, saremo in grado di specificare i tag di Spring Security con il prefisso sec .

4. Il tag di autorizzazione

4.1. accedere alle espressioni

Nelle nostre applicazioni, potremmo avere informazioni che dovrebbero essere mostrate solo per determinati ruoli o utenti.

In questo caso, possiamo utilizzare il tag di autorizzazione :

 Login   Logout 

Inoltre, possiamo verificare se un utente autenticato ha ruoli specifici:

 Manage Users 

E possiamo utilizzare qualsiasi espressione Spring Security come valore per l' accesso :

  • hasAnyRole ('ADMIN', 'USER') restituisce true se l'utente corrente ha uno dei ruoli elencati
  • isAnonymous () restituisce true se l' entità corrente è un utente anonimo
  • isRememberMe () restituisce true se l' entità corrente è un utente ricordami
  • isFullyAuthenticated () restituisce true se l'utente è autenticato e non è né anonimo né un utente ricordami

4.2. url

Oltre a questo, possiamo verificare la presenza di utenti autorizzati a inviare richieste a determinati URL:

 Manage Users 

4.3. Debug

Potrebbero verificarsi casi in cui desideriamo un maggiore controllo sull'interfaccia utente, ad esempio negli scenari di test. Invece di fare in modo che Spring Security salti il ​​rendering di queste sezioni non autorizzate, possiamo impostare spring.security.disableUISecurity = true , ad esempio, nel nostro file application.properties .

Quando lo facciamo, il tag di autorizzazione non nasconde il suo contenuto. Invece, avvolgerà il contenuto con ... tag. Quindi, possiamo personalizzare il rendering da soli con alcuni CSS.

Ricorda però che nascondere i contenuti tramite CSS non è sicuro! L'utente può semplicemente visualizzare la fonte per vedere il contenuto non autorizzato.

5. Il tag di autenticazione

Altre volte, vorremo visualizzare i dettagli sull'utente che ha eseguito l'accesso, come dire qualcosa come "Bentornata, Carol!" sul posto.

Per questo, utilizziamo il tag di autenticazione :

 Welcome Back,  

6. Il tag csrfInput

Si spera di avere la difesa CSRF di Spring Security abilitata nella nostra app!

Se lo facciamo, Spring Security inserisce già un input di modulo nascosto CSRF all'interno tag per noi.

Ma nel caso volessimo usare invece, possiamo indicare manualmente dove Spring Security deve posizionare questo campo di input nascosto utilizzando csrfInput :

  Text Field:

Se la protezione CSRF non è abilitata, questo tag non restituisce nulla.

7. Il tag csrfMetaTags

Oppure, se vogliamo accedere al token CSRF in Javascript, probabilmente vorremo inserire il token come meta tag.

Possiamo farlo con il tag csrfMetaTags :

  JavaScript with CSRF Protection   var csrfParameter = $("meta[name='_csrf_parameter']").attr("content"); var csrfHeader = $("meta[name='_csrf_header']").attr("content"); var csrfToken = $("meta[name='_csrf']").attr("content");    ...  

Ancora una volta, se la protezione CSRF non è abilitata, questo tag non restituirà nulla.

8. Conclusione

In questo breve articolo, ci siamo concentrati su alcuni casi d'uso comuni dei taglib di Spring Security.

E, come abbiamo appreso, sono molto utili per il rendering di contenuto JSP che riconosce l'autenticazione e l'autorizzazione.

Tutti gli esempi, come sempre, possono essere trovati su Github.