Vous êtes sur la page 1sur 6

Spring Security

Spring Security
Level up your Java code and explore what Spring can do for you.

https://spring.io/projects/spring-security

OWASP :

OWASP Foundation, the Open Source Foundation for Application Security | OWASP Foundation
OWASP Foundation, the Open Source Foundation for Application Security on the main website for The
OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.
https://owasp.org/

Open Web Application Security Project, désormais Open Worldwide Application Security
Project, est une communauté en ligne travaillant sur la sécurité des applications Web.

OWASP a été créé pour informer le public des attaques les plus fréquentes à l’encontre des
applications web, les étudier, et donner des informations sur la manière de les prévenir.

Fonctionnement de Spring Security :


Une application spring est composé de plusieurs module et parmi eux nous retrouvons Spring
Security qui, comme sont nom l’indique, assure la sécurité de notre application spring.

Spring Security sécurise les requêtes HTTP de votre application web en les faisant passer par
trois niveaux :

Spring Security 1
1. Un pare-feu HTTP

2. Un proxy

3. Des filtres

Pare-feu HTTP :

Le pare-feu se trouve en première position. C’est un dispositif qui permet de filtrer le flux de
communication, en décidant quels sont les informations qui peuvent penetrer dans notre
application ou non.
Le pare-feu bloque les informations douteuse, qui se caractérise le plus souvent par des
mauvaises requêtes. De façon simple, le pare-feu est comme un agent de sécurité qui
garde une maison blinder, la maison étant notre application. Il décide qui peut entré ou non
en vérifiant minutieusement les information au préalable.

Proxy :

Spring Security 2
Le proxy gère et dirige le trafic

Le proxy gère et dirige le trafic. Après que le pare-feu nous est donné accès à l’application
web, le proxy, en fonction de nos autorisations, nous diriges vers les ressources avec lesquels
nous pouvons interagir. Pour se faire, on utilise la classe DelegatingFilterProxy.

Filtres :
Les filtres sont un ensemble de règle qui compose la configuration de notre Spring Security.
Chaque filtre correspond à une règle de sécurité que nous ajoutons à notre configuration
Spring Security. Ces règles peuvent par exemple définir que tels utilisateurs n’ont droit
d’effectuer que des requêtes GET.

Point de départ :
Avant de commencer à utiliser Spring Security dans notre application, il es nécessaire d’avoir
au préalable certaine dépendance qui doivent être importé dans l’ordre :

1. La dépendance 0Auth2

2. La dépendance spring security

3. La dépendance spring web

💡 Si ces dépendances ne sont pas initialisées dans le bon ordre, elles ne


fonctionneront pas correctement. Si nous les ajoutons manuellement, nous devons
nous assurés qu’elles soient placées dans le bon ordre de haut en bas.

Spring Security 3
Le contrôle d’accès :
Le contrôle d’accès se compose de deux étapes :

1. Authentification :
Elle permet de répondre à la question Est-ce bien vous ?
On peut retrouver deux type d’authentification dans une application web : Authentification à
facteur unique (qui permet de se connecter grâce à un mot de passe uniquement) et
multiple (requiert la livraison de plusieurs éléments pour prouver notre identité, le mot de
passe seul ne suffit pas).

Le navigateur peut également gérer l’authentification de différente manières : Authentification


par session et par token (jeton en français).

Authentification par session :


Dans l’authentification par session, les utilisateurs se connectent d’abord grâce à leurs
identifiants. Ils sont alors authentifiés et commencent une session. Une session
représente la période entre la connexion et la déconnexion de l’utilisateur pendant
laquelle un canal de communication est établie entre l’utilisateur et l’application. Le
serveur sauvegarde les informations de session de l’utilisateur, et transmet une copie à un
petit fichier (un cookie), également sauvegardé dans le navigateur de l’utilisateur. Ces
informations contiennent généralement les identifiants de l’utilisateur, la durée de la
session et un numéro de session. Chaque fois que l’utilisateur envoie une requête via
l’application web, le serveur consulte le cookie pour s’assurer que les identifiants de la
session correspondent à ceux du serveur, et sont encore valides.

💡 En raison de la copie des identifiants de l’utilisateur sur le serveur, et du cookie,


l’authentification par session est qualifiée comme étant à états (en
anglais stateful).

Authentification par token


Dans le cadre de l'authentification par token, l’utilisateur s'authentifie sur le serveur, et ce
dernier transmet les informations de la session vers un petit fichier (un token) pour
effectuer la sauvegarde uniquement sur le navigateur ou l’ordinateur de l’utilisateur.
Un token a la même fonction qu’un cookie, mais ces deux processus présentent tout de
même des différences significatives. Une authentification par session avec cookie
sauvegarde les identifiants sur le serveur et sur le navigateur de l’utilisateur. Tandis que
lors d’une authentification par token, un token web JSON (JWT) dispose déjà des
informations nécessaires pour valider l’utilisateur ; ainsi, il n’est pas nécessaire de
sauvegarder les informations de la session sur le serveur. En cela, cette authentification est
qualifiée comme étant sans état (en anglais Stateless).

Spring Security 4
JSON signifie JavaScript Object Notation. Le token web JSON est un objet
JavaScript qui encode et transmet vos informations d’authentification. Il valide
l’authentification de l’utilisateur, car il détient des informations codées que seul le serveur
d'autorisation comprend. Les procédures sont alors plus performantes et sécurisées
qu’avec le cookie ; c’est pourquoi la plupart des applications web Java utilisent JWT.

2. Autorisation :
Les autorisations permettent de répondre à la question Qu’est ce que je peux faire ?
L’autorisation permet de s’assurer que l’utilisateur authentifié se rend uniquement sur les
pages qu’il est autorisé à consulter.

Contrôle d’accès basé sur les rôles :


Les rôles permettent de définir différents niveaux d’accès. On peut par exemple crée des
rôles d’utilisateur permettant d’accéder uniquement à des pages dédier aux utilisateurs et
des rôles d’administrateur permettant d’accéder uniquement aux pages dédiés aux
administrateur. Cette opération s’appelle le contrôle d’accès basé sur les rôles.

Configurez un contrôle d’accès basé sur les rôles :


Les rôles sont défini dans la chaîne de filtres Spring Security.

Créer une chaîne se filtres :


1. Créer une classe de configuration : Il faut tout d’abord créer une classe qu’on va
utiliser pour la configuration de notre chaîne de filtre. On peut créer un répertoire dédié
pour cela.

Spring Security 5
2. Annoter la classe de configuration par l’annotation @Configuration pour indiquer à
Spring Boot que ceci est un Bean de type configuration.

3. Annoter la classe par @EnableWebSecurity pour importer les configuration de


sécurité.

4. Faire étendre la classe par WebSecurityConfigurerAdapter, cela permet d’indiquer


que notre classe est une classe de configuration de Spring Security.

5. Ajouter la méthode configure(), qui va contenir notre chaîne de filtre.

6. Ajouter un objet de type HttpSecurity comme paramètre de la méthode configure. Elle


permet d’appliquer la chaine de filtre aux requêtes HTTP. Par défaut, les paramètres de
sécurité fonctionne sur toutes les requêtes HTTP, à moins qu’elle ne soit spécifié sur la
chaîne de filtre de sécurité.

7.

Spring Security 6

Vous aimerez peut-être aussi