カスタム レルムを持つ Web アプリケーションを Tomcat 6 にデプロイした後の HTTP ステータス 404

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

質問

Tomcat 6 用の Web アプリケーションを開発しているのですが、解決方法がわからない問題に直面しています。次の小さなシナリオを考えてみましょう。ユーザーとパスワードだけでなくユーザーを認証する必要があることを想像してください。認証は、いくつかの追加条件が真である場合にのみ許可されます (例:ユーザー、パスワード、および IP アドレスが一致します)。私が理解した限りでは、Tomcat はレルムの概念を導入しました。シンプルな JDBCRealm これまではユーザーとパスワードのペアのみがチェックされていたため、アプリケーションにはこれで十分でした。IP アドレスも確認する必要があります。を拡張する簡単なテストクラスを作成しました。 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;
    }

}

そして、私は、を使用してこのレルムクラスをバインドしようとしました 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>

Web アプリケーションのデプロイメントは成功しますが、ログイン ページにアクセスしようとすると、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 これについては、しかし、とにかく正しい解決策がわかりません。

前もって感謝します。

役に立ちましたか?

解決

レルムの不適切なデプロイメントが問題の原因でした。さらに、カスタム レルムはここには適していません。IP アドレスを確認する最良の方法は、HTTP リクエストにアクセスできるカスタム フォーム認証システムを作成することです。でのフォーム認証システムの変更 web.xml, 、そしてそれをデプロイすると、まさに必要なものが可能になりました。また、安全なリソースが認証「壁」の背後に隠されているため、リクエストごとに IP アドレスをチェックする必要がなくなります。これは、認証が許可された場合、IP が有効であることを意味します。良い解決策を教えてくれた JoseK に感謝します。Tomcat のレルムの概念に少し混乱しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top