Master 1 d'Informatique - Option MAD (Middleware et Applications aDaptables) - Université Grenoble I - UFR IMA


Aspect-Oriented Programming / AspectJ

Enseignant : Sara Bouchenak, Sara.Bouchenak@imag.fr

Page de l'option MAD : http://sardes.inrialpes.fr/~bouchena/teaching/MAD/


TP 4 : Authentification

  1. Objectif
     
  2. Environnement logiciel
     
  3. Application bancaire
     
  4. Système d'authentification de l'utilisateur
     
  5. Ajout de l'authentification à l'application bancaire
     
  6. Ajout de l'authentification avec AspectJ
     
  7. Combinaison de l'authentification, des transactions et du traçage
     
  8. Compte-rendu global

1. Objectif

Ajout de l'aspect d'authentification de l'utilisateur dans une application en utilisant l'AOP/AspectJ.

2. Environnement logiciel

Les logiciels suivants sont nécessaires au TP ; les installer s'ils ne sont pas disponibles dans votre environnement.

Logiciels

En plus des logiciels utilisés dans les TP précédents :

Les logiciels nécessaires au TP sont également disponibles dans ~sbouchen/ENS/MAD/AOP/Soft/

Variables d'environnement

Définir la variable d'environnement suivante :

En plus des variables utilisées dans les TP précédents :

Exemple de fichier de commandes pour Unix/tcsh env-tcsh (soit ajouter ces commandes à votre fichier ~/.cshrc, soit exécuter la commande source env-tcsh).
Exemple de fichier de commandes pour Windows env-win.bat (exécuter la commande env-win.bat).
Ces fichiers sont disponibles dans ~sbouchen/ENS/MAD/AOP/Soft/

3. Application bancaire

Récupérer le TP4 qui se trouve dans ~sbouchen/ENS/MAD/AOP/Project/TP4.tgz

Une application bancaire persistante est donnée dans Project/TP4/Basic :

Configurer la base de données McKoi :

Compiler et exécuter l'application puis naviguer dans son API et son code pour comprendre son fonctionnement :

4. Système d'authentification de l'utilisateur

Problématique

La sécurité est un aspect important des systèmes logiciels actuels. Elle inclut plusieurs composantes, telles que l'authentification, l'autorisation, le chiffrage (cryptographie) et la protection contre les attaques des sites web.

Dans ce TP, nous nous intéressons plus particulièrement à l'aspect d'authentification. L'authentification permet de vérifier qu'un utilisateur est bien "celui qu'il dit être".

Authentification

L'application bancaire manipule des comptes bancaires. Les opérations d'accès à ces comptes et de modification de ces comptes sont effectuées par certains utilisateurs qui doivent s'authentifier avant tout accès au système bancaire. Seuls les utilisateurs connus (dont l'authentification réussit) doivent pouvoir accéder au système bancaire.

JAAS est une librairie Java (incluse dans le J2SDK 1.4) qui fournit les abstractions et mécanismes nécessaires à la mise en oeuvre de l'authentification des utilisateurs. Les programmes voulant bénéficier de l'authentification doivent faire appel à ces mécanismes.
Voir http://java.sun.com/products/jaas/ ou http://java.sun.com/security/jaas/doc/api.html pour plus d'informations sur JAAS.

5. Ajout de l'authentification à l'application bancaire

Le répertoire Project/TP4/Authentication_HandCoded/ contient une extension "programmée à la main" de l'application bancaire pour la prise en compte de l'authentification.

La fonction d'authentification dans JAAS se base sur les éléments suivants :

Les principales modifications apportées à l'application bancaire pour la prise en compte de l'authentification sont les suivantes :

  1. sample_jaas.config est le fichier de configuration utilisé pour JAAS. Il est passé comme propriété système lors du lancement du programme principal avec la commande java.
     
  2. Dans la classe test.DatabaseAccountTest, la création d'un objet LoginContext avec les deux paramètres suivants : Sample comme nom de configuration tel que défini dans le fichier de configuration sample_jaas.config, et TextCallbackHandler comme un callback handler.
     
  3. Nous utilisons sample.module.SampleLoginModule qui est un module simple d'authentification ; il est proposé par le tutorial JAAS (http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/GeneralAcnAndAzn.html). Pour cela, nous utilisons le package sample fourni dans le tutorial et proposant la mise en oeuvre du module (voir Project/TP4/Authentication_HandCoded/src/sample/).
     
  4. L'authentification avec SampleLoginModule marche si le login et le mot de passe spécifiés sont respectivement testUser et testPassword.

Compiler, configurer et exécuter l'application comme suit :

6. Ajout de l'authentification avec AspectJ

En vous inspirant de la solution précédente, proposer une prise en compte de l'aspect d'authentification en utilisant AspectJ.

Pour ce faire, copier le répertoire Project/TP4/Authentication_Aspects et écrire l'aspect demandé dans Project/TP4/Authentication_Aspects/aspects/authentication/AuthAspect.java :

7. Combinaison de l'authentification, des transactions et du traçage

Combiner l'utilisation des aspects de traçage/transactions proposés dans les TP2 et TP3 avec l'aspect d'authentification proposé dans ce TP pour qu'ils soient tous appliqués à votre application bancaire.

Pour cela, vous ne devez pas modifier le code de vos aspects ni le code de l'application mais utiliser le compilateur AspectJ avec ces différents aspects et l'application bancaire.

8. Compte-rendu global

Un compte-rendu global sur les TP 2, 3 et 4 est à rendre lors de la séance de démonstration.
Voir ici pour plus d'informations.