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 :
|