TP Sécurité des applications web Objectifs Préparer les

Transcription

TP Sécurité des applications web Objectifs Préparer les
TP Sécurité des applications web
Objectifs
Dans ce TP vous allez apprendre à sécuriser une application web et EJB.
Le TP est composé de plusieurs parties, chacune proposant de traiter un
problème particulier de sécurité.
Dans ce TP, nous allons écrire une application composée de:
 Une page menu, qui proposera un lien sur chaque page suivante.
 Une page destinée aux vendeurs
 Une page destinée aux clients enregistrés
 Une page accessible par tous
Le site suivant peut vous être utile:
http://docs.oracle.com/javaee/6/tutorial/doc/bnbxj.html#bnbxr
Préparer les pages
Vous allez créer un projet web dynamique (ipint12.security.web). Dans ce projet,
vous allez créer les pages précédentes (jsp), et les placer comme dans la
structure suivante:
Structure de départ du projet
Changez les titres et mettez un message différent dans chaque page. La page
d'index contient des liens vers les autres pages.
Sécuriser les pages web
Notre site est accessible par trois type de rôles :
 vendor - permet d'accéder aux pages placées dans le répertoire 'vendor'
 client - permet d'accéder aux pages placées dans le répertoire 'client'
 admin - permet d'accéder à toutes les pages de tout les répertoires
Modifiez votre site afin de pouvoir prendre en compte ces rôles.
Vous devez:





déclarer les rôles (web.xml)
déclarer les zones protégées (web.xml)
déclarer la forme de login (web.xml)
déclarer des utilisateurs, les affecter à des groupes (serveur, console
d'admin ou fichier .properties)
déclarer le mapping role <-> groupe, ou spécifier "mapping direct" au niveau
du serveur.
Définir les utilisateurs et les rôles dans un fichier
Il faut définir un certain nombre d'utilisateur, et leur affecter des groupes.
Dans un premier temps, nous utilisons des fichiers d'utilisateur et groupes.
Déclaré vos utilisateurs et vos groupe. La façon de déclarer dépend du serveur
que vous utilisez. Reportez vous au cours.
Définir sa propre page de login
Vous pouvez modifier l'application afin de fournir votre propre page de login, au
lieu du popup du navigateur.
Reportez vous au cours afin de voir comment fournir votre propre page de login
Rediriger les exception vers des pages prédéfinies
Ceci ne fait pas vraiment partie de la sécurité mais est très utile pour rediriger
les exceptions dues aux erreurs déclenchées par la sécurité.
La sécurité déclenche des erreurs de type 403 et 404. Modifiez votre web.xml
afin d'utiliser une page appropriée pour afficher le message d'erreur.
<error-page>
<error-code>401</error-code>
<location>/error/logonCanceled.jsp</location>
</error-page>
Page jsp avec parties dépendants du rôle de l'utilisateur
Modifiez la page de menu, afin de ne montrer que les menus (ou liens) réélement
accessible à l'utilisateur en fonction de ses droits.
Sécuriser les méthodes des beans
Vous allez maintenat créer un nouveau projet (ipint12.security.domain) avec un
bean session. Ce bean aura 3 methodes retournant "Hello the world!":
 sayHelloVendor()
 sayHelloClient()
 sayHello()
L'objectif est de restreindre l'accès de chacune de ces méthodes aux rôles
correspondant.
Modifiez votre application afin que la page associé à un rôle affiche le résultat
de l'appel à la méthode correspondante du bean. Vous pouvez passer par un
contrôleur Spring.
Ecrire dans une méthode une
dépendant du rôle de l'utilisateur
partie
conditionnelle
Vous allez ajouter à votre bean une méthode showRoleName() : String qui
renvoie une chaine indiquant les rôles de l'utilisateur.
Cette méthode doit donc tester les rôles de l'utilisateur, et construire la chaine.
Modifiez la page d'accueil afin d'afficher le résultat de l'appel de cette
méthode
Définir les utilisateurs et les rôles dans une base de
données
Il est possible de définir les utilisateur et les rôles dans une base de données
plutôt que dans des fichiers. Il faut pour cela définir une table d'utilisateurs et
une table de groupe, puis indiquer au serveur d'utiliser ces tables pour
authentifier les utilisateurs. Normalement, vous n'avez pas de changement a
faire dans l'application.
Recherchez une solution sur le net, et mettez la en oeuvre dans votre TP.