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.

En présentiel ou en classe virtuelle
En français ou en anglais
Public

Développeurs et développeuses Java, architectes

Accessible aux personnes en situation de handicap

Délai

Le cours peut être organisé dans un délai d'un mois.

Objectifs

A l'issue du cours vous saurez:

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

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
Salt
  • Les concepts: user, role, authority.
  • les interfaces UserManager et GroupManager.
  • 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
Set-Cookie
  • 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
OIDC
  • 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
@PreAuthorize
  • 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
Mock user
  • 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:

Contact

Questions, inscriptions, demande d'adaptation: