Sécuriser une application avec Spring Security
La sécurité est un aspect critique d'une application, elle concerne autant l'accès aux données que la logique métier ou les échanges avec les applications clientes. Celles-ci se sont diversifiées (application mobiles, single page applications, etc...) tandis que l'émergence des microservices dans les architectures backend exigent l'adoption d'une stratégie de single sign on.
En découle divers protocoles et une variété de problématiques auxquelles Spring Security apporte des solutions. Ce cours vous permettra de les apprendre et les mettre en oeuvre.
Développeurs et développeuses Java, architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- choisir un protocole d'authentification;
- apprécier les qualités d'un algorithme de hachage de mots de passe;
- protéger une application web contre les attaques CSRF;
- sécuriser une API REST avec JWT;
- coupler une application web à un serveur OpenID Connect;
- appliquer des règles d'autorisations;
- tester une application sécurisée.
Prérequis
Ce cours demande une connaissance solide des bases de la programmation Java (principes de la programmation orientée objet, types génériques, annotations, expressions lambda), de Spring et Spring boot et une habitude de travailler avec Eclipse ou IntelliJ.
Méthodes pédagogiques
- Explication, pour chaque concept, du problème qu'il prétend résoudre.
- Mise en pratique d'un concept immédiatement après qu'il ait été présenté.
- Validation de chaque étape par exécution de tests unitaires.
- Exercice « fil rouge » pour obtenir en fin de cours une application complète.
- QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Programme détaillé
Introduction
- Les mode d'authentification: basic, formulaire de login, session, jeton, kerberos.
- Présentation du bean
SecurityFilterChain
et des filtres qui le composent. - Les beans créés automatiquement par Spring Boot.
- La représentation de l'identité de l'utilisateur: l'interface
Principal
. - Les attaques CSRF et XSS.
La déclaration d'un référentiel d'utilisateurs
- Les concepts: user, role, authority.
- les interfaces
UserManager
etGroupManager
. - La déclaration d'un bean
UserDetailsService
pour répondre aux demandes d'authentification. - Le choix d'un algorithme de hachage des mots de passe.
Mise en pratique: déclaration d'une base de données comme référentiel d'utilisateurs et de rôles.
La sécurité par session
- Les cookies comme moyens d'établir des sessions.
- La protection contre les attaques XSS et CSRF.
- Mise en place pour une API REST.
- Mise en place pour une IHM MVC.
- Stockage externalisé des informations de sessions pour rendre l'application stateless.
Mise en pratique: activation de la sécurité par session sur un frontend Spring MVC, protection contre les attaques CSRF.
La sécurité par jeton
- Présentation du standard JWT.
- Le bean
JwtDecoder
. - L'émission et la signature des jetons: clés symétriques ou assymétriques.
- Couplage avec un serveur OpenID Connect.
- Points sensibles: révocations, gestion des rôles.
- Protection contre le vol des jetons par attaque XSS dans une single page application.
- Le pattern 'token relay' dans une architecture microservices.
Mise en pratique: couplage de Spring avec un serveur OpenID Connect, application d'une stratégie de refus des jetons revoqués.
Autorisations
- Règles d'accès aux routes.
- Règles d'accès aux méthodes.
- Règles d'accès aux éléments d'une vue.
Mise en pratique: sécurisation des routes d'une application web et des pages d'un frontend MVC.
Les tests
- Test d'une méthode ou une API en tant qu'un utilisateur authentifié.
- Le rôle des
SecurityMockMvcRequestPostProcessors
.
Mise en pratique: utilisation de spring-security-test
pour tester l'application
sécurisée précédemment.
Prix et financements
2 12
Réduction de 50% pour les associations reconnues d'utilité publique.
Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- Le dispositif FNE formation si votre organisation est éligible.
- Le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).