Я разрабатываю веб-приложение для Tomcat 6, и я сталкиваюсь с проблемой, я не знаю, как ее решить. Рассмотрим следующий небольшой сценарий. Представьте себе, что для аутентификации пользователей требуется не только пользователь и пароль, аутентификация предоставляется только в том случае, если выполняются некоторые дополнительные условия (например, пользователь, пароль и его IP-адрес). Насколько я понял, Томкат представил концепцию царств. Для приложения достаточно простого JDBCRealm
, потому что пара пользователей и паролей была проверена только до момента. Теперь необходимо также проверить IP-адрес. Я написал простой тестовый класс, который расширяет JDBCRealm
класс:HTTP-статус 404 после развертывания веб-приложения с пользовательской сферой для 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;
}
}
И тогда я пытался связать этот класс области действия с помощью 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>
Развертывание веб-приложений преуспевает, но когда я пытаюсь получить доступ к странице входа в систему, Tomcat возвращает 404 страниц (я подозреваю, что корень проблемы является атрибутом className
в Realm
узла):
HTTP Status 404 -
type Status report
message
description The requested resource() is not available.
Apache Tomcat/6.0.24
Как я могу связать пользовательский JDBCRealm
потомок в context.xml
? Может быть, я полностью ошибаюсь, пытаясь использовать JDBCRealm
для этого, но я все равно не вижу правильного решения.
Заранее спасибо.
Проверьте журналы на наличие стеков. –
что в журналах? (tomcat/logs) – Bozho
@ Thorbjørn Ravn Andersen, я пытался проверять журналы раньше, но кажется, что ничего не записывается в журнал. –