Tutoriel Spring N°11 : sécurité Spring 3

////Tutoriel Spring N°11 : sécurité Spring 3

Découvrez et mettez en œuvre les étapes clés de la sécurisation d’une application web avec Spring security 3, le module de sécurité du framework Spring. Mettez l’injection de dépendance de Spring au service de la sécurité de vos applications Java. Sécurisez pos écrans ainsi que l’accès aux méthodes de vos beans. Authentifiez et Autorisez vos différents utilisateurs.

Objis, spécialiste de la formation Java, est heureux de vous offrir ce
tutoriel, extrait de séances pratiques de notre formation SPRING.

planning-formation-framework-spring-objis

Les + objis

 70% de travaux pratiques

 Clé USB avec tous les outils utilisés + Corrigés TPs

 Bilan pédagogique individuel + conseils

Liens utiles

 + de 100 tutoriaux java/jee Objis

 10 tutoriaux spring framework objis

 Objis, spécialiste formation java depuis 2005

 Exemple Mise en oeuvre UserDetailService

 Tutoriel Spring Security avec ACL : introduction

 Tutoriel Sécurité Spring avec ACL

Prérequis, outils et versions

 Tutoriel Spring N°2 : injection de dépendances

Pour ce Tutoriel, le plugin Eclipse Spring IDE doit être au préalable correctement installé. Ou mieux : SpringSource Tool Suite (STS).

Liens utiles

 10 tutoriaux spring framework objis

 Mise en oeuvre sécurité JAAS

Objectifs

 Maîtriser les étapes de sécurisation d’une application web avec Spring.

 Mettre en œuvre ces étapes en sécurisant une application web

 S’authentifier à travers une base de données avec Spring

 Mettre en œuvre différents filtres proposés par Spring

 Gérer les écrans en fonction des rôles utilisateurs

Programme

 Partie 1 : Configuration Sécurité d’un écran web

 Partie 2 : Gestion des login/pwd en base de données

 Partie 3 : Api de Sécurité pour la vue

Durée

1h00.

Qui sommes-nous ?

presentation-objis-conseil-formation-java-soa2.png

Recommandations : prérequis JAAS

Nous recommandons avant de travailler sur Spring Security de :

 Comprendre la spécification JAAS (Java Authentication and Authorisation Service)

 Avoir mis en oeuvre JAAS pour sécuriser par configuration une application web (war)

 (Bonus) mis en oeuvre JAAS pour sécuriser par programmation l’accès aux méthodes d’un EJB

Introduction Spring Security

Spring Security vous permet de sécuriser vos applications web, qu’elles utilisent Spring ou non. Nous allons dans un premier temps créer un projet web dynamique Eclipse simple, puis, sécuriser cette application.

Voici les différentes librairies qui composent Spring Security 3.1 , téléchargeable (zip) ici.

spring-security-3-lib

Notez la présence de 2 applications war suivantes :

— spring-security-samples-contacts-3.1.0.RELEASE.war : Application Démo

 – spring-security-samples-tutorial-3.1.0.RELEASE.war : Tutoriaux

Partie 1 : sécurisation application ‘demospringsecurity’

Dans cette partie vous allez créer pas à pas une application web et la sécuriser avec Spring Security.

 Créez dans eclipse un projet web dynamique ‘demospringsecurity’

 Créez une page d’accueil index.htm

 Déployez l’application dans tomcat

tutoriel_spring_objis_securite_9.png

Configuration du web.xml

 Imposez la page index.htm comme étant la page d’accueil ()

 Déclarez l’intercepteur de sécurité . Pour cela, ajoutez le contenu suivant dans le fichier web.xml

tutoriel_spring_objis_securite_10.png

La classe Spring DelegatingFilterProxy délègue la sécurité à une implémentation interne ici apellée springSecurityFilterChain, qui est dédiée à la gestion de la sécurité Spring.

REMARQUE: vous ne devez pas utiliser le bean springSecurityFilterChain vous-même. Une fois ajouté au web.xml, vous n’avez plus qu’à configurer les services de sécurité dans le fichier de définition de bean Spring à travers la balise

 Configurez le chargeur de définition des beans : ContextLoaderListener

tutoriel_spring_objis_securite_11.png

Le fichier web.xml est désormais bien configuré.

Capacités Spring du projet Eclipse

 Ajoutez des capacités Spring à votre projet (cliquez droit sur le projet puis Spring Tools/Add Spring Nature)

tutoriel_spring_objis_securite_13.png

Configuration de objisapp-security.xml

 A l’aide de l’assistant de création de fichier de définition de Spring de Spring IDE / STS, créez le fichier WEB-INFobjisapp-security.xml

 Ajoutez les elements necessaire à la mise en oeuvre de la configuration sécurité spring. En particulier le namespace security. Vous obtenez un fichier comme celui-ci :

spring-security-3-namespace

 Expliquez

Ajout librairie Spring, Spring Security, Log4j

Dans le répertoire WEB-INFlib, ajouter les jars suivants

spring-security-3-config-lib-projet-eclipse

Notez les jars spécifiques à Spring Security, les autres étant issus du spring framework.

Definir sa stratégie de sécurité

 Ajoutez les lignes suivantes au fichier objisapp-security.xml

tutoriel_spring_objis_securite_14.png

Signifie que

— Toutes les URLs de l’application sont sécurisées (pattern= »/** »)

— Seuls les utilisateurs posédant un rôle ROLE_USER ont accès aux URLs

— Par défaut (auto-config= »true ») Spring proposera les services

— > une page formulaire avec champs login/password

— > Fonction ‘se rappeller de moi’ (remember me)

REMARQUE: il peut y avoir plusieurs . L’ordre est important. Le premier qui vérifie une contrainte pour une ressource donnée sera appliqué à la ressource.

Ajout d’utilisateurs authorisés

Ajoutez les lignes suivantes :

spring-security-3-config-authentication-manager

Nous y deffinissons 2 utilisateurs, leurs mots de passe et leur rôles. Les rôles entrent en jeu lors du contrôle d’accès que Spring réalise sur les ressources/URLs demandées, après l’étape d’authentification de l’utilisateur .

Lancement de l’application

 Clic droitRun asRun on server. Un ecran d’authentification apparaît

spring-security-3-authentification-1

 Proposer un mauvais login/pwd (ex : toto/toto). Vous obtenez l’écran ci-dessous.

spring-security-3-authentification-2

 Proposez le login/pwd d’un des utilisateurs déclarés dans ApplicationContext-security.xml. Par exemple : douglas/objis. Vous accédez alors à l’écran d’accueil de l’application

tutoriel_spring_objis_securite_9.png

REMARQUES :

1) Vous n’avez pas eu besoin de créer l’écran de login/pwd. Spring le fait pour vous.

2) Vous n’avez pas eu besoin de gérer la validation des champs du formulaire de login. Spring le fait pour vous.

3) Le service ‘remember me’ est disponible.

TELECHARGEZ le PROJET à CETTE ETAPE

A VOUS DE JOUER :
En utilisant la documentation Spring Security , précisez comment :

— imposer votre propre formulaire de login

— mettre en oeuvre une authentification type BASIC

— imposer un écran spécifique en cas de succès de l’authentification

Page de login

tutoriel_spring_objis_securite_22.png

Partie 2 : Sécurité Database

Plutôt que de mettre ‘en dur’ vos logins/pwd sur le fichier de configuration, il est plus courant de stocker les informations sensibles dans un annuaire LDAP ou une base de données.

En particulier, pour la base de données vous pouvez faire pointer vers une base de données possédant tables spécifiques pour les utilisateurs et les roles :

sql-spring-security-db

 En utilisant le cours ainsi que la documentation officielle Spring, mettez en œuvre d’une authentification basée sur des login/pwd stockés non pas sur un fichier mais dans une base de données MySQL.

spring-security-3-auth-db-4

QUESTION : comment faire pour spécifier une table ‘utilisateur’ spécifique et prééxistante ?

Tables utilisateurs et roles

Table des utilisateurs :

tutoriel_spring_objis_securite_20.png

Et la table des roles

tutoriel_spring_objis_securite_21.png

TELECHARGEZ le PROJET à CETTE ETAPE

Partie 3 : Api de Sécurité pour la vue

A partir de l’application définie précedement , et en utilisant le cours ainsi que la documentation officielle de Spring, proposez , suivant l’utilisateur connecté , 2 menus différent :

 Profil participant : (login/pwd : max/max)

 Profil Employe : (login/pwd : douglas/objis)

Le fichier Menu.jsp pourrait ressembler à :

tutoriel_spring_objis_securite_23.png

A noter la déclaration suivante

tutoriel_spring_objis_securite_23bis.png

Récupérer le login et le role

tutoriel_spring_objis_securite_24.png

Test avec utilisateur profil formateur

Login :

tutoriel_spring_objis_securite_25.png

Résultat :

tutoriel_spring_objis_securite_26.png

Test avec utilisateur profil participant

Login :

tutoriel_spring_objis_securite_27.png

Résultat :

tutoriel_spring_objis_securite_28.png

TELECHARGEZ le PROJET SECURISATION AVEC BASE DE DONNEES (Attention , version spring securiti 2.x)

Conclusion

Dans ce tutoriel, nous avons mis en oeuvre quelques configuration de Spring Security.

Prochaine formation SPRING

Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Spring : formation SPRING Objis

Pour aller plus loin : Formation SPRING Objis

Faîtes comme nos clients : choisissez Objis pour votre formation SPRING (5j):

 70% travaux pratiques ,

 Exercices de reformulation orale

 Exercices de mise en situation.

 Gagnez en confiance. Prenez du recul.

 Clé USB avec cours + outils + TPs + Correction TPs

planning-formation-framework-spring-objis

2018-01-27T15:06:17+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java