Je développe une application web pour Tomcat 6, et je suis confronté à un problème que je ne sais pas résoudre. Considérons le petit scénario suivant. Imaginez qu'il soit nécessaire d'authentifier les utilisateurs non seulement par l'utilisateur et le mot de passe, mais l'authentification n'est accordée que si certaines conditions supplémentaires sont vraies (par exemple, utilisateur, mot de passe et correspondance de son adresse IP). Pour autant que je comprenne, Tomcat a introduit le concept de domaines. Un simple JDBCRealm
était suffisant pour l'application, car la paire d'utilisateurs et de mots de passe n'était vérifiée que jusqu'au moment. Maintenant, il est également nécessaire de vérifier l'adresse IP. J'ai écrit une classe de test simple qui étend la classe JDBCRealm
:Statut HTTP 404 après avoir déployé une application web avec un domaine personnalisé vers Tomcat 6
package security;
import org.apache.catalina.realm.JDBCRealm;
import org.apache.log4j.Logger;
import java.security.Principal;
import java.sql.Connection;
public class ApplicationRealm extends JDBCRealm {
protected final Logger logger = Logger.getLogger(this.getClass());
@Override
public synchronized Principal authenticate(Connection connection, String userName, String credentials) {
logger.info("custom realm test, the authentication will be failed just for testing");
return null;
}
}
Et puis je l'ai essayé de lier cette classe de domaine en utilisant la context.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Realm className="security.ApplicationRealm" connectionName="${user}" connectionPassword="${password}"
connectionURL="${url}${database}" debug="99" driverName="${driver}" roleNameCol="role" userCredCol="pw"
userNameCol="login" userRoleTable="users_roles" userTable="users"/>
</Context>
Le déploiement de l'application Web réussit, mais lorsque je tente d'accéder à la page de connexion, Tomcat renvoie une page 404 (je soupçonne que la racine du problème est l'attribut className
dans le nœud Realm
):
HTTP Status 404 -
type Status report
message
description The requested resource() is not available.
Apache Tomcat/6.0.24
Comment puis-je lier une coutume JDBCRealm
descendant dans context.xml
? Peut-être que je me trompe complètement en essayant d'utiliser le JDBCRealm
pour cela, mais je ne peux pas voir la bonne solution de toute façon.
Merci d'avance.
Vérifiez les journaux pour les traces de pile. –
Qu'y a-t-il dans les journaux? (Tomcat/logs) – Bozho
@ Thorbjørn Ravn Andersen, J'ai essayé de vérifier les journaux avant, mais il semble que rien n'est écrit dans le journal. –