Introduction aux taglibs de sécurité Spring

Introduction aux Taglibs de sécurité Spring

1. Vue d'ensemble

Dans ce didacticiel, nous allons examinerSpring Security Taglibs, qui fournit une prise en charge de base pour accéder aux informations de sécurité et appliquer des contraintes de sécurité dans les JSP.

2. Dépendances Maven

Tout d'abord, ajoutons la dépendancespring-security-taglibs à nospom.xml:


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

3. Déclarer les Taglibs

Maintenant, avant de pouvoir utiliser les balises, nous devons importer la balise tag en haut de notre fichier JSP:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

Après avoir ajouté cela, nous serons en mesure de spécifier les balises de Spring Security avec le sprefixsec .

4. La baliseauthorize

4.1. Expressionsaccess

Dans nos applications, nous pourrions avoir des informations qui devraient être affichées uniquement pour certains rôles ou utilisateurs.

Lorsque c'est le cas, nous pouvons utiliser la baliseauthorize:


  Login


  Logout

De plus, nous pouvons vérifier si un utilisateur authentifié a des rôles spécifiques:


    Manage Users

Et nous pouvons utiliser n'importe quelSpring Security expression comme valeur pouraccess:

  • hasAnyRole(‘ADMIN','USER') renvoietrue si l'utilisateur actuel possède l'un des rôles répertoriés

  • isAnonymous() renvoietrue si le principal actuel est un utilisateur anonyme

  • isRememberMe() renvoietrue si le principal actuel est un utilisateur se souvenir de moi

  • isFullyAuthenticated() renvoietrue si l'utilisateur est authentifié et n'est ni anonyme ni un utilisateur se souvenant de moi

4.2. url

En dehors de cela, nous pouvons rechercher les utilisateurs autorisés à envoyer des demandes à certaines URL:

4.3. Débogage

Il peut y avoir des cas où nous voulons plus de contrôle sur l'interface utilisateur, par exemple dans des scénarios de test. Au lieu de laisser Spring Security ignorer le rendu de ces sections non autorisées, nous pouvons définirspring.security.disableUISecurity =true dans, par exemple, notre fichierapplication.properties.

When we do this, the authorize tag won’t hide its contents. Au lieu de cela, il enveloppera le contenu avec les balises<span class=”securityHiddenUI”>… </span> à la place. Ensuite, nous pouvons personnaliser le rendu avec du CSS.

Remember though that hiding content via CSS isn’t secure! L'utilisateur peut simplement afficher la source pour voir le contenu non autorisé.

5. La baliseauthentication

À d'autres moments, nous souhaitons afficher des détails sur l'utilisateur connecté, par exemple en disant quelque chose comme "Bienvenue, Carol!" sur le site.

Pour cela, nous utilisons le cerfauthentication :


    Welcome Back, 

6. La balisecsrfInput

J'espère que la défense CSRF de Spring Security est activée dans notre application!

Si nous le faisons, Spring Security insère déjà une entrée de formulaire caché CSRF dans les balises<form:form> pour nous.

Mais au cas où nous voudrions utiliser<form> à la place,we can manually indicate where Spring Security should place this hidden input field using csrfInput:

Text Field:

Si la protection CSRF n'est pas activée, cette balise ne génère rien.

7. La balisecsrfMetaTags

Ou,if we’re wanting to access the CSRF token in Javascript,, nous voudrons probablement insérer le jeton en tant que balise Meta.

Nous pouvons le faire avec le cerfcsrfMetaTags :


    
        JavaScript with CSRF Protection
        
        
    
    
    ...
    

Encore une fois, si la protection CSRF n'est pas activée, cette balise ne génère rien.

8. Conclusion

Dans cet article rapide, nous nous sommes concentrés sur certains cas d'utilisation courants de taglib Spring Security.

Et, comme nous l’avons appris, elles sont très utiles pour rendre le contenu JSP avec authentification et autorisation.

Tous les exemples, comme toujours, peuvent être trouvésover on Github.