Introduction à Spring Security Taglibs

1. Vue d'ensemble

Dans ce didacticiel, nous examinerons Spring Security Taglibs, qui fournit un support de base pour accéder aux informations de sécurité et appliquer des contraintes de sécurité dans les JSP.

2. Dépendances de Maven

Tout d'abord, ajoutons la dépendance spring-security-taglibs à notre pom.xml :

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

3. Déclaration des Taglibs

Maintenant, avant de pouvoir utiliser les balises, nous devons importer le taglib en haut de notre fichier JSP:

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

4. La balise d' autorisation

4.1. accéder aux expressions

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

Dans ce cas, nous pouvons utiliser la balise authorize :

 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 quelle expression Spring Security comme valeur d' accès :

  • hasAnyRole ('ADMIN', 'USER') renvoie true si l'utilisateur actuel possède l'un des rôles répertoriés
  • isAnonymous () retourne true si le principal actuel est un utilisateur anonyme
  • isRememberMe () renvoie true si le principal actuel est un utilisateur Remember -me
  • isFullyAuthenticated () renvoie true si l'utilisateur est authentifié et n'est ni anonyme ni un utilisateur se souvenir de moi

4.2. URL

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

 Manage Users 

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éfinir spring.security.disableUISecurity = true dans, par exemple, notre fichier application.properties .

Lorsque nous faisons cela, la balise authorize ne cache pas son contenu. Au lieu de cela, il enveloppera le contenu avec des balises … à la place. Ensuite, nous pouvons personnaliser le rendu nous-mêmes avec du CSS.

N'oubliez pas que cacher du contenu via CSS n'est pas sécurisé! L'utilisateur peut simplement afficher la source pour voir le contenu non autorisé.

5. L' authentification Tag

À 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 la balise d' authentification :

 Welcome Back,  

6. Le csrfInput Tag

Espérons 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 à l'intérieur tags pour nous.

Mais au cas où nous voudrions utiliser à la place, nous pouvons indiquer manuellement où Spring Security doit placer ce champ d'entrée masqué à l'aide de csrfInput :

  Text Field:

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

7. Le csrfMetaTags Tag

Ou, si nous voulons accéder au jeton CSRF en Javascript, nous voudrons probablement insérer le jeton en tant que balise meta.

Nous pouvons le faire avec la balise 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");    ...  

Encore une fois, si la protection CSRF n'est pas activée, cette balise ne produira 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, ils sont très utiles pour rendre le contenu JSP d'authentification et d'autorisation.

Tous les exemples, comme toujours, peuvent être trouvés sur Github.