sécurité_j2ee

Upload: midobouz

Post on 08-Apr-2018

214 views

Category:

Documents


0 download

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.