État HTTP 404 après le déploiement d'une application Web avec un domaine personnalisé pour Tomcat 6

StackOverflow https://stackoverflow.com/questions/3566956

Question

je développe une application web pour Tomcat 6, et je suis face à face avec un problème que je ne sais pas comment résoudre. Considérons le petit scénario suivant. Imaginez qu'il est nécessaire pour Authentifier les utilisateurs non seulement par utilisateur et mot de passe, l'authentification est accordée que si certaines conditions supplémentaires sont vraies (par exemple l'utilisateur, mot de passe, et ses matchs d'adresse IP). En ce que je compris, Tomcat introduit le concept de domaines. Un JDBCRealm assez simple d'été pour l'application, car la paire d'utilisateur et le mot de passe a été vérifié que jusqu'au moment. Maintenant, il est nécessaire de vérifier l'adresse IP aussi. J'ai écrit une classe de test simple qui étend la classe JDBCRealm:

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 j'ai essayé de lier cette classe de domaine en utilisant le 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 un descendant JDBCRealm personnalisé dans context.xml? Peut-être que je suis tout à fait tort d'essayer d'utiliser le JDBCRealm pour cela, mais je ne vois pas la bonne solution de toute façon.

Merci à l'avance.

Était-ce utile?

La solution

Déploiement incorrect du royaume était la cause du problème. De plus, un domaine personnalisé ne convient pas ici. La meilleure façon de vérifier l'adresse IP est en train d'écrire un authentificateur formulaire personnalisé qui ont accès à la requête HTTP. Modification du authentificateur de forme dans le web.xml, et le déployer permis exactement ce que je avais besoin. Elle élimine également l'obligation de vérifier l'adresse IP à chaque demande, car les ressources sécurisées sont cachées derrière l'autorisation « mur » - cela signifie que si l'autorisation est accordée, elle aussi des moyens que la propriété intellectuelle était valide. Merci à josek pour pointer une bonne solution. J'étais juste un peu confus avec le concept de domaines dans Tomcat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top