Java & le web
x Le web dynamique
x Java & le web

Intro à Tomcat
x Serveur d'applications
x Présentation Tomcat
x Installation
x Arborescence

Configuration
x Introduction
x Server
x Service
x Engine
x Host
x Context
x DefaultContext
x Logger
x Loader
x Realm
x Valve

Connecteurs
x Balise Connector
x Coyote HTTP/1.1

Sécurisation accès
x La balise Realm
x Memory Based
x JDBC Database
x Protéger ressources
x Cryptage password

Les Valve
x La balise Valve
x Access Log
x Single Sign-On

Fonctionnalités
x Déploiement auto.
x Class loaders

Eclipse & Tomcat
x Plug-in pour Eclipse
x Projet Tomcat
x Debugger des JSP

Créer une appli web
x Présentation
x Architecture
x Fichier web.xml
x Déploiement

Tomcat 5
x Nouveautés

Tomcat's Corner
x Crédits
x Liens
 
             
Memory Based Realm

 

 

Présentation

Il s'agit d'un Realm qui stocke la liste des utilisateurs dans un simple fichier XML. Lorsqu'il est sollicité, ce Realm lit le fichier (dont le format est expliqué plus bas) et stocke son contenu (les utilisateurs) en mémoire (une collection d'objets Java, un par utilisateur). Ce Realm est le plus simple fourni par Tomcat. Il est même simpliste, en ce qu'il ne fournit pas beaucoup de fonctionnalités. Une modification dans le fichier XML (donc dans la liste des utilisateurs ou des rôles) oblige à redémarrer le serveur pour être prise en compte. Un handicap qui interdit son utilisation en production. Imaginez un site sur lequel des utilisateurs peuvent ouvrir un compte, et où il faudrait redémarrer le serveur à chaque nouvelle inscription...

 

Configuration

Pour utiliser ce Realm, on spécifie dans le fichier de configuration une balise Realm à laquelle on fournira comme attribut className la valeur "org.apache.catalina.realm.MemoryRealm". Un Realm peut être inséré comme balise fille d'un Engine, d'un Host ou d'un Context. Un Realm défini à un niveau inférieur (exemple : Context) écrase localement l'éventuel Realm du niveau supérieur (exemple : Host).

Le Memory Based Realm accepte des attributs optionnels dans la balise Realm :

Nom Description
debug Définit le niveau de debugging pour ce composant.
digest L'algorithme de "digest" utilisé, lorsque les mots de passe sont stockés cryptés. Cet algorithme doit être l'un de ceux reconnus par la classe java.security.MessageDigest : SHA, MD2, or MD5. Par défaut (si cet attribut n'est pas spécifié), les mots de passe sont considérés stockés en texte simple.
pathname Le chemin vers le fichier XML contenant la liste des utilisateurs à utiliser. Comme d'habitude, ce chemin peut être absolu ou relatif au répertoire d'installation de Tomcat (TOMCAT_HOME). Cet attribut est optionnel. S'il n'est pas renseigné, le fichier "TOMCAT_HOME/conf/tomcat-users.xml" est utilisé par défaut.

On pourra donc configurer ainsi un MemoryBasedRealm dans un Host du fichier de configuration :

<Host ... >
     <Context ...>
     ...
     </Context>

     <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="c:/appli/users.xml" />
</Host>

Format du fichier XML contenant les utilisateurs

Le Memory Based Realm s'appuie donc sur un fichier XML pour stocker la liste des utilisateurs. Ce fichier a un format extrêmement simple, que nous allons détailler à partir de l'exemple suivant (fichier TOMCAT_HOME/conf/tomcat-users.xml) :

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="admin" password="" roles="admin,manager"/>
</tomcat-users>

La balise mère de ce fichier doit être tomcat-users, et peut contenir les balises suivantes :

  • role : définit un rôle, en quelque sorte un groupe d'utilisateur. Un rôle a un nom (rolename).

  • user : définit un utilisateur, en lui donnant un nom/login (username), un mot de passe (password) qui peut être vide et une liste de rôles (roles) séparés par des virgules. Ces rôles doivent faire partie des rôles définis dans les balises role du fichier.