Sie sind auf Seite 1von 16

Tutoriel : Sécurité des applications J2EE avec Spring

Objectifs

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


Mettre en œuvre ces étapes en sécurisant l’application PetClinic livrée avec
Spring
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 : Installation et lancement de Petclinic


Partie 2 : Création et sécurisation application ’demospringsecurity’
Partie 3 : Sécurisation de l’application PetClinic
Partie 4 : Sécurité Database
Partie 5 : Api de Sécurité pour la vue

Durée

1h30.

Introduction

Petclinic est une des applications exemples fournies avec Spring, dans le
répertoire \docs\samples.

L’application Petclinic n’est pas sécurisée par défaut. Nous allons dans un
premier temps l’installer (partie 1), puis, en s’inspirant d’une application
sécurisée (partie 2), la sécuriser.

Partie 1 : Installation et lancement de Petclinic

1. Dans un "Invite de commade"(MS-DOS), allez dans le répertoire


SPRING_HOME/samples/petclinic (SPRING_HOME étant le répertoire
d’installation de Spring).

Création de petclinic.war

2. Lancez la commande :> build warfile . Cette commande génère un fichier


petclinic.war présent dans le répertoire SPRING_HOME\samples\petclinic\dist .
Validez le message ’BUILD SUCCESSFULL’ à la fin du build.

Création de la base de données HSQLDB

3. Dans une autre "Invite de commade" Lancez la base de données de


l’application (par défaut HSQLDB, base de données 100% java) à travers
la commande SPRING_HOME\petclinic\db\hsqldb>server.bat , HSQLDB
étant déjà incluse dans Spring. Ci-dessous déroulement du lancement.
La base de données à donc prête.

4. Copiez le fichier \dist\weaving\spring-tomcat-weaver.jar de Spring vers


"TOMCAT_HOME/lib", TOMCAT_HOME étant le répertoire d’installation de Tomcat
6.

5. Copiez petclinic.war dans répertoire TOMCAT_HOME/webapps .

6. Créez un fichier de contexte petclinic.xml dans


TOMCAT_HOME/conf/Catalina/localhost (Catalina/localhost à créer) avec le
contenu suivant :

7.Lancez tomcat puis aller à : http://localhost:8080/petclinic dans la barre


d’adresse. Vous pouvez voir l’application tourner.
REMARQUE : pour voir le contenu de la base de données, lancer dans une
nouvelle invite de commande, et à partir du répertoire
\samples\petclinic\db\hsqldb la commande : java -cp
"SPRING_HOME\lib\hsqldb\hsqldb.jar"
org.hsqldb.util.DatabaseManager, SPRING_HOME étant le répertoire
d’installation de Spring.
Connectez vous au serveur HSQLDB et observez le jeu de données et de
résultat d’opérations de persistence.

Partie 2 : Installation d’une application sécurisée

Déployez dans Tomcat le war spring-security-samples-tutorial-


2.0.4.war présent dans SPRING_HOME\spring-security-2.0.4\dist
Lancez ensuite le navigateur : http://localhost:8080/spring-security-
samples-tutorial-2.0.4.
Analysez l’arborescence de l’application, ainsi que le fichier \WEB-
INF\ApplicationContext-security.xml

Quels sont les librairies impliquées dans la sécurité Spring de l’application ?


Partie 3 : Création et sécurisation application ’demospringsecurity’

Dans cette partie vous allez créer pas à pas une application web et la sécuriser
avec Spring MVC.
Créez dans eclipse un projet web dynamique ’demospringsecurity’
Créez une page d’accueil index.htm

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

La classe Spring DelegatingFilterProxy délègue la sécurité à une implémentation interne ici appelé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


Capacités Spring du projet Eclipse

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

Configuration de iirapp-security.xml

A l’aide de l’assistant de création de fichier de définition de Spring de Spring IDE, créez le fichier
\WEB-INF\iirapp-security.xml

Ajoutez les éléments nécessaires à la mise en œuvre de la configuration sécurité Spring. En


particulier le fichier iirapp-security.xml

Définir sa stratégie de sécurité

Ajoutez les lignes suivantes au fichier ApplicationContext-security.xml


Signifie que :

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


— Seuls les utilisateurs possé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 rappeler 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 autorisés

Ajoutez les lignes suivantes :

Nous y définissons 2 utilisateurs, leurs mots de passe et leurs 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.

Ajout librairie Spring, Spring Security, Log4j

Dans le répertoire \WEB-INF\lib, ajouter les jars suivants

pour Spring :
spring.jar présent dans \SPRING_HOME\dist
spring-web.jar présent dans \SPRING_HOME\dist\modules

Pour Spring Security :


spring-security-core-2.0.4.jar présent dans \SPRING_SEC_HOME\dist
spring-security-core-tiger-2.0.4.jar présent dans \SPRING_SEC_HOME\dist
spring-security-acl-2.0.4.jar présent dans \SPRING_SEC_HOME\dist
spring-security-taglibs-2.0.4.jar présent dans \SPRING_SEC_HOME\dist commons-codec-1.3.jar
\SPRING_HOME\lib\jakarta-commons

Pour Log4j :
commons-logging.jar présent dans \SPRING_HOME\lib\jakarta-commons
log4j.jar présent dans \SPRING_HOME\lib\log4j. Ajoutez également le fichier log4j.xml utilisé
dans les précédents Tps.

Lancement de l’application

Clic droit\Run as\Run on server. Un écran d’authentification apparaît


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

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
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.

Partie 3 : Sécurisation de l’application PetClinic

Dans cette partie, vous sécurisez l’accès à l’application PetClinic.

Ajout de librairies de sécurité

Recopiez les fichiers suivants de l’application ’springdemosecurity’ dans PetClinic :

1.\WEB-INF\lib\spring-security-core-2.0.4.jar dans samples\petclinic\war\WEB-INF\lib 2.\WEB-


INF\lib\spring-security-core-tiger-2.0.4 dans samples\petclinic\war\WEB-INF\lib 3.\WEB-
INF\lib\spring-security-acl-2.0.4.jar dans samples\petclinic\war\WEB-INF\lib 4.\WEB-INF\lib\spring-
security-taglibs-2.0.4.jar dans samples\petclinic\war\WEB-INF\lib 5.\WEB-INF\lib\commons-codec-
1.3.jar dans samples\petclinic\war\WEB-INF\lib

Copie du fichier ApplicationContext-security.xml

Copiez \WEB-INF\ApplicationContext-security.xml de ’demospringsecurity’ dans


samples\petclinic\war\WEB-INF

Mise à jour du fichier de configuration : web.xml

Mettez à jour le fichier web.xml de l’application PetClinic , avec les éléments suivants du web.xml
de demospringsecurity :

Filtre de sécurite (springSecurityFilterChai) Chargement du fichier ApplicationContext-security.xml

Lancement de la version sécurisée


Lancez à nouveau le build du war petclinic.war
Déployez le nouveau petclinic.war
Testez à nouveau : http://localhost:8080/petclinic

Partie 4 : Sécurité Database

Vous devez créer une application permettant aux participants des formations Objis d’avoir un espace
privé, tout comme les formateurs, les commerciaux et l’équipe de maintenance du matériel et salles
informatiques des formations.

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.

Les roles suivants sont identifiés : ROLE_FORMATEUR, ROLE_PARTICIPANT,


ROLE_COMMERCIAL, ROLE_MAINTENANCE

Ci-dessous quelques éléments du fichier de beans objisapp-security.xml

Tables utilisateurs et roles

Table des utilisateurs :


Et la table des roles

Page de login

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

A partir de l’application Tiles 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 à


A noter la déclaration suivante

Récupérer le login et le role

Test avec utilisateur profil formateur

Login :
Résultat :

Test avec utilisateur profil participant

Login :
Résultat :

Conclusion

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

Das könnte Ihnen auch gefallen