HTTP-Status 404 nach dem Tomcat einer Web-Anwendung mit einem benutzerdefinierten Bereich Bereitstellung von 6

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

Frage

Ich entwickle eine Web-Anwendung für Tomcat 6, und ich bin von Angesicht zu Angesicht mit einem Problem, das ich weiß nicht, wie zu lösen. Betrachten wir das folgende kleine Szenario. Stellen Sie sich vor, dass es zum Authentifizieren Benutzer nicht nur von Benutzern und Passwort erforderlich ist, wird die Authentifizierung nur dann, wenn einige zusätzlichen Bedingungen gewährt wahr (zum Beispiel Benutzer, Passwort, und seine IP-Adresse übereinstimmt). Soweit ich verstanden, eingeführt Tomcat das Konzept der Reichen. Eine einfache JDBCRealm war genug für die Anwendung, da der Benutzer und Kennwort bis zu dem Moment nur überprüft wurde. Jetzt ist es erforderlich, auch die IP-Adresse zu überprüfen. Ich habe eine einfache Test Klasse geschrieben, die die JDBCRealm Klasse erweitert:

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;
    }

}

Und dann habe ich versucht, dieses Reich Klasse mit der context.xml zu binden:

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

Der Einsatz der Web-Anwendung erfolgreich ist, aber wenn ich versuche, die Login-Seite zuzugreifen, Tomcat gibt eine 404-Seite (Ich vermute, dass die Wurzel des Problems ist das className Attribut im Realm Knoten):

HTTP Status 404 -
type Status report
message
description The requested resource () is not available.
Apache Tomcat/6.0.24

Wie kann ich binden Sie eine benutzerdefinierte JDBCRealm Nachkomme in context.xml? Vielleicht bin ich völlig falsch versucht, die JDBCRealm dafür zu verwenden, aber ich kann die richtige Lösung ohnehin nicht sehen.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Falscher Einsatz des Reiches war die Ursache des Problems. Darüber hinaus ist ein Brauch Reich hier nicht geeignet. Der beste Weg, um die IP-Adresse des Prüfens ist das Schreiben eines benutzerdefinierten Formulars Authenticator, der Zugriff auf die HTTP-Anforderung haben. Ändern der Form Authenticator im web.xml und Bereitstellen es genau das, was erlaubt ich brauchte. Es entfällt auch die Anforderung IP-Adresse bei jeder Anfrage zu überprüfen, weil sichere Ressourcen hinter der Genehmigung „Mauer“ versteckt sind - das heißt, wenn die Zulassung erteilt wird, es bedeutet auch, dass die IP gültig war. Dank JOSEK für eine gute Lösung zeigt. Ich war nur ein wenig mit dem Begriff der Reichen in Tomcat verwirrt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top