sécurité_j2ee
TRANSCRIPT
-
8/7/2019 Scurit_J2EE
1/16
Tutoriel : Scurit des applications J2EE avec Spring
Objectifs
Matriser les tapes de scurisation dune application web avec Spring. Mettre en uvre ces tapes en scurisant lapplication PetClinic livre avec
SpringSauthentifier trav ers une base de donnes avec SpringMettre en uvre diffrents filtres proposs par Spring Grer les crans en fonction des rles utilisateurs
Programme
Partie 1 : Installation et lancement de PetclinicPartie 2 : Cration et scurisation applic ation demospringsecurity Partie 3 : Scurisation de lapplication PetClinic Partie 4 : Scurit DatabasePartie 5 : Api de Scurit pour la vue
Dure
1h30.
Introduction
Petclinic est une des applications exemples fournies avec Spring, dans le
rpertoire \docs\samples.
Lapplication Petclinic nest pas scurise par dfaut. Nous allons dans unpremier temps linstaller (partie 1), puis, en sinspirant dune applicationscurise (partie 2), la scuriser.
Partie 1 : Installation et lancement de Petclinic
1. Dans un "Invite de commade"(MS-DOS), allez dans le rpertoireSPRING_HOME/samples/petclinic (SPRING_HOME tant le rpertoiredinstallation de Spring).
Cration de petclinic.war
2. Lancez la commande :> build warfile . Cette commande gnre un fichierpetclinic.war prsent dans le rpertoire SPRING_HOME\samples\petclinic\dist .Validez le message BUILD SUCCESSFULL la fin du build.
Cration de la base de donnes HSQLDB
3. Dans une autre "Invite de commade" Lancez la base de donnes delapp lication (par dfaut HSQLDB, base de donnes 100% java) traversla commande SPRING_HOME\petclinic\db\hsqldb> server.bat , HSQLDBtant dj incluse dans Spring. Ci-dessous droulement du lancement.
-
8/7/2019 Scurit_J2EE
2/16
La base de donnes donc prte.
4. Copiez le fichier \dist\weaving\spring-tomcat-weaver.jar de Spring vers"TOMCAT_HOME/lib", TOMCAT_HOME tant le rpertoire dinstallation de Tomcat6.
5. Copiez petclinic.war dans rpertoire TOMCAT_HOME/webapps .
6. Crez un fichier de contexte petclinic.xml dansTOMCAT_HOME/conf/Catalina/localhost (Catalina/localhost crer) avec lecontenu suivant :
7.Lancez tomcat puis aller : http://localhost:8080/petclinic dans la barredadresse. Vous pouvez voir lapplication tourner.
-
8/7/2019 Scurit_J2EE
3/16
REMARQUE : pour voir le contenu de la base de donnes, lancer dans unenouvelle invite de commande, et partir du rpertoire\samples\petclinic\db\hsqldb la commande : java -cp"SPRING_HOME\lib\hsqldb\hsqldb.jar"org.hsqldb.util.DatabaseManager , SPRING_HOME tant le rpertoiredinstallation de Spring.
-
8/7/2019 Scurit_J2EE
4/16
Connectez vous au serveur HSQLDB et observez le jeu de donnes et dersultat doprations de persistence.
Partie 2 : Installation dune application scurise
Dployez dans Tomcat le war spring-security-samples-tutorial-2.0.4.war prsent dans SPRING_HOME\spring-security-2.0.4\dist
-
8/7/2019 Scurit_J2EE
5/16
Lancez ensuite le navigateur : http://localhost:8080/spring-security-samples-tutorial-2.0.4 .
http://localhost:8080/spring-security-samples-tutorial-2.0.4http://localhost:8080/spring-security-samples-tutorial-2.0.4http://localhost:8080/spring-security-samples-tutorial-2.0.4http://localhost:8080/spring-security-samples-tutorial-2.0.4http://localhost:8080/spring-security-samples-tutorial-2.0.4http://localhost:8080/spring-security-samples-tutorial-2.0.4 -
8/7/2019 Scurit_J2EE
6/16
Analysez larboresce nce d e lapplication, ainsi que le fichier \WEB-INF\ ApplicationContext-security.xml
Quels sont les librairies impliques dans la scurit Spring de lapplication ?
-
8/7/2019 Scurit_J2EE
7/16
Partie 3 : Cration et scurisation application demospringsecurity
Dans cette partie vous allez crer pas pas une application web et la scuriseravec Spring MVC.
Crez dans eclipse un projet web dynamique demospringsecurity Crez une page daccueil index.htm
Configuration du web.xml
Imposez la page index.htm comme tant la page daccueil ()Dclarez lintercepteur de scurit . Pour cela, ajoutez le contenu suivant dans le fichier web.xml
La classe Spring DelegatingFilterProxy dlgue la scurit une implmentation interne ici appelespringSecurityFilterChain , qui est ddie la gestion de la scurit Spring.
REMARQUE : vous ne devez pas utiliser le bean springSecurityFilterChain vous-mme. Une foisajout au web.xml, vous navez plus qu configurer les services de scurit dans le fichier dedfinition de bean Spring travers la balise
Configurez le chargeur de dfinition des beans : ContextLoaderListener
-
8/7/2019 Scurit_J2EE
8/16
Capacits Spring du projet Eclipse
Ajoutez des capacits Spring votre projet (cliquez droit sur le projet puis Spring Tools/Add SpringNature
Configuration de iirapp-security.xml
A laide de lassistant de cration de fichier de dfinition de Spring de Spring IDE, crez le f ichier\WEB-INF\iirapp-security.xml
Ajoutez les lments ncessaires la mise en uvre de la configuration scurit Spring. Enparticulier le fichier iirapp-security.xml
Dfinir sa stratgie de scurit
Ajoutez les lignes suivantes au fichier ApplicationContext-security.xml
-
8/7/2019 Scurit_J2EE
9/16
Signifie que :
Toutes les URLs de lapplication sont scurises (pattern="/**") Seuls les utilisateurs possdant un rle ROLE_USER ont accs aux URLs Par dfaut (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. Lordre est important . Le premier qui vrifie une contraintepour une ressource donne sera appliqu la ressource.
Ajout dutilisateurs aut oriss
Ajoutez les lignes suivantes :
Nous y dfinissons 2 utilisateurs, leurs mots de passe et leurs rles. Les rles entrent en jeu lors ducontrle daccs que Spring ralise sur les ressources/URLs demandes, aprs ltapedauthentification de lutilisateur .
Ajout librairie Spring, Spring Security, Log4j
Dans le rpertoire \WEB-INF\lib, ajouter les jars suivants
pour Spring :spring.jar prsent dans \SPRING_HOME\distspring-web.jar prsent dans \SPRING_HOME\dist\modules
Pour Spring Security :spring-security-core-2.0.4.jar prsent dans \SPRING_SEC_HOME\distspring-security-core-tiger-2.0.4.jar prsent dans \SPRING_SEC_HOME\distspring-security-acl-2.0.4.jar prsent dans \SPRING_SEC_HOME\distspring-security-taglibs-2.0.4.jar prsent dans \SPRING_SEC_HOME\dist commons-codec-1.3.jar
\SPRING_HOME\lib\jakarta-commons
Pour Log4j :commons-logging.jar prsent dans \SPRING_HOME\lib\jakarta-commonslog4j.jar prsent dans \SPRING_HOME\lib\log4j. Ajoutez galement le fichier log4j.xml utilis
dans les prcdents Tps.
Lancement de lapplication
Clic droit\Run as\Run on server. Un cran dauthentification apparat
-
8/7/2019 Scurit_J2EE
10/16
Proposer un mauvais login/pwd (ex : toto/toto). Vous obtenez lcran ci -dessous.
Proposez le login/pwd dun des utilisateurs dclars dans ApplicationContext -security.xml. Parexemple : douglas/objis. Vous accdez alors lcran daccueil de lapplication
-
8/7/2019 Scurit_J2EE
11/16
REMARQUES :
1) Vous navez pas eu besoin de crer lcran de login/pwd. Spring le fait pour vous.
2) Vous navez pas eu besoin de grer la validation des champs du formulaire de login. Spring le faitpour vous.
3) Le se rvice remember me est disponible.
Partie 3 : Scurisation de lapplication PetClinic
Dans cette partie, vous scurisez laccs lapplication PetClinic.
Ajout de librairies de scurit
Recopiez les fichiers suivants de lapplication 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 danssamples\petclinic\war\WEB-INF
Mise jour du fichier de configuration : web.xml
Mettez jour le fichier web.xml de lapplication PetClinic , avec les lments suivants du web.xmlde demospringsecurity :
Filtre de scurite (springSecurityFilterChai) Chargement du fichier ApplicationContext-security.xml
Lancement de la version scurise
-
8/7/2019 Scurit_J2EE
12/16
Lancez nouveau le build du war petclinic.warDployez le nouveau petclinic.warTestez nouveau : http://localhost:8080/petclinic
Partie 4 : Scurit Database
Vous devez crer une application permettant aux participants des formations Objis davoir un espacepriv, tout comme les formateurs, les commerciaux et lquipe de maintenance du matriel et sallesinformatiques des formations.
En utilisant le cours ainsi que la documentation officielle Spring, mettez en uvre duneauthentification base sur des login/pwd stocks non pas sur un fichier mais dans une base de donnesMySQL.
Les roles suivants sont identifis : ROLE_FORMATEUR, ROLE_PARTICIPANT,ROLE_COMMERCIAL, ROLE_MAINTENANCE
Ci-dessous quelques lments du fichier de beans objisapp-security.xml
Tables utilisateurs et roles
Table des utilisateurs :
-
8/7/2019 Scurit_J2EE
13/16
Et la table des roles
Page de login
Partie 5 : Api de Scurit pour la vue
A partir de lapplication Tiles dfinie prcedement , et en utilisant le cours ainsi que la documentationofficielle de Spring, proposez , suivant lutilisateur connect , 2 menus diffrent :
Profil participant : (login/pwd : max/max)Profil Employe : (login/pwd : douglas/objis)
Le fichier Menu.jsp pourrait ressembler
-
8/7/2019 Scurit_J2EE
14/16
A noter la dclaration suivante
Rcuprer le login et le role
Test avec utilisateur profil formateur
Login :
-
8/7/2019 Scurit_J2EE
15/16
Rsultat :
Test avec utilisateur profil participant
Login :
-
8/7/2019 Scurit_J2EE
16/16
Rsultat :
Conclusion
Dans ce tutoriel, nous avons mis en uvre quelques configuration de Spring Security.