Inleiding tot Spring Security Taglibs

1. Overzicht

In deze zelfstudie bekijken we Spring Security Taglibs, die basisondersteuning biedt voor toegang tot beveiligingsinformatie en het toepassen van beveiligingsbeperkingen in JSP's.

2. Maven afhankelijkheden

Laten we allereerst de spring-security-taglibs-afhankelijkheid toevoegen aan onze pom.xml:

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

3. Het declareren van de Taglibs

Nu, voordat we de tags kunnen gebruiken, moeten we de taglib bovenaan ons JSP-bestand importeren:

Nadat we dit hebben toegevoegd, kunnen we de tags van Spring Security specificeren met de sec voorvoegsel.

4. Het toestemming geven Label

4.1. toegang Uitdrukkingen

In onze applicaties hebben we mogelijk informatie die alleen voor bepaalde rollen of gebruikers moet worden weergegeven.

Als dit het geval is, kunnen we de toestemming geven label:

 Log in Log uit 

Verder kunnen we controleren of een geauthenticeerde gebruiker specifieke rollen heeft:

 Gebruikers beheren 

En we kunnen elke uitdrukking van Spring Security gebruiken als onze waarde voor toegang:

  • hasAnyRole (‘ADMIN ',' USER ') geeft terug waar als de huidige gebruiker een van de vermelde rollen heeft
  • isAnoniem () geeft terug waar als de huidige opdrachtgever een anonieme gebruiker is
  • isRememberMe () geeft terug waar als de huidige opdrachtgever een onthoud-mij-gebruiker is
  • isFullyAuthenticated () geeft terug waar als de gebruiker geauthenticeerd is en noch anoniem, noch een onthoud-mij-gebruiker is

4.2. url

Anders dan dat, kunnen we controleren op gebruikers die geautoriseerd zijn om verzoeken naar de bepaalde URL's te sturen:

 Gebruikers beheren 

4.3. Foutopsporing

Er kunnen gevallen zijn waarin we meer controle over de gebruikersinterface willen, bijvoorbeeld bij het testen van scenario's. In plaats van dat Spring Security het weergeven van deze ongeautoriseerde secties overslaat, kunnen we instellen spring.security.disableUISecurity=waar in, laten we zeggen, onze application.properties het dossier.

Wanneer we dit doen, wordt de toestemming geven tag zal de inhoud ervan niet verbergen. In plaats daarvan wordt de inhoud ingepakt met tags in plaats daarvan. Vervolgens kunnen we de weergave zelf aanpassen met wat CSS.

Onthoud echter dat het verbergen van inhoud via CSS niet veilig is! De gebruiker kan eenvoudig de bron bekijken om ongeautoriseerde inhoud te zien.

5. Het authenticatie Label

Op andere momenten willen we details over de ingelogde gebruiker weergeven, zoals iets zeggen als "Welkom terug, Carol!" op de site.

Hiervoor gebruiken we de authenticatie label:

 Welkom terug, 

6. Het csrfInput Label

Hopelijk hebben we de CSRF-verdediging van Spring Security ingeschakeld in onze app!

Als we dat doen, voegt Spring Security al een verborgen CSRF-formulierinvoer in tags voor ons.

Maar voor het geval we willen gebruiken in plaats daarvan, we kunnen handmatig aangeven waar Spring Security dit verborgen invoerveld moet plaatsen met csrfInput:

  Tekstveld:

Als CSRF-bescherming niet is ingeschakeld, geeft deze tag niets weer.

7. Het csrfMetaTags Label

Of, als we toegang willen hebben tot het CSRF-token in Javascript, we willen het token waarschijnlijk invoegen als een metatag.

We kunnen dit doen met de csrfMetaTags label:

  JavaScript met CSRF-beveiliging var csrfParameter = $ ("meta [name = '_ csrf_parameter']"). Attr ("content"); var csrfHeader = $ ("meta [naam = '_ csrf_header']"). attr ("inhoud"); var csrfToken = $ ("meta [naam = '_ csrf']"). attr ("inhoud"); ... 

Nogmaals, als CSRF-bescherming niet is ingeschakeld, zal deze tag niets uitvoeren.

8. Conclusie

In dit korte artikel hebben we ons gericht op enkele veelvoorkomende Spring Security-taglib-use-cases.

En, zoals we hebben geleerd, zijn ze erg handig voor het weergeven van authenticatie- en autorisatiebewuste JSP-inhoud.

Alle voorbeelden zijn, zoals altijd, te vinden op Github.