Bonjour,

je viens chercher des lumières sur le forum à propos de l'authentification Tomcat.

Mon appli web : jsp/struts/hibernate + postgresql + tomcat5.0.30 + jdk1.4

J'ai configuré l'appli (web.xml) pour avoir des pages contraintes à identification (security-constraint), ie un forward vers une page de login (form-login-config).

Et l'authentification réalisée est configurée pour être gérée par Tomcat (DataSourceRealm), c'est à dire j'ai défini indiqué la table Utilisateur dans mon modèle de données avec les infos mot de passe, login, et role.

Jusque ici tout est ok.

Ma problématique actuelle est que dans la table Utilisateur il y a un flag déterminant si l'utilisateur est archivé ou non, ie s'il peut se connecter ou non.

J'aimerais donc que l'authentification Tomcat aillle non seulement vérifier la bonne association login/mot de passe, mais aussi qu'elle vérifie que l'utilisateur n'est pas archivé.

Et là, j'ai cherché pas mal sur le net mais n'ai pas réussi à trouver une solution qui me convienne.

La meilleure que j'ai trouvée et que j'ai pour l'instant adoptée est la suivante :

*Surcharger la classe DataSourceRealm pour qu'elle fasse ce que je veux (en l'occurence ce que je voulais modifier n'était pas aisément surchargeable, j'ai donc été contraint de récupérer le code source d'une méthode et de modifier qques lignes)
*Positionner le .class de cette surcharge dans le dossier "classes" de Tomcat
*Configurer le server.xml pour utiliser cette surcharge et non DataSourceRealm


Ce que je n'aime pas :
*devoir positionner le .class dans le dossier "classes" de Tomcat. Au niveau de l'installation de l'appli c pas cool. J'aurais aimé que ce que je surcharge reste dans le war de l'appli.
*la surcharge de DataSourceRealm est pas propre je trouve à cause de certains attributs et méthodes positionnés en "private".



Si qqun a une meilleure solution, je suis preneur de toute proposition.

Mais je suis quand même surpris de ne pas trouver un moyen aisé de surcharger les authentifications classiques de Tomcat.

Typiquement avec JBoss, pour l'équivalent DataSourceRealm, il est possible de définir la requête SQL à réaliser en base pour les logins et les roles. Avec une solution de la sorte, je n'aurais pas eu besoin de faire de surcharge mais juste modifier la config du server.xml.


Merci à vous !