JDBC を使用した認証に Tomcat 7 と Realm を使用しています。独自の実装を使用するように DataSourceRealm を拡張しました。私の問題は、場合によっては、Tomcat REALM が DataSourceRealm のメソッドを呼び出さず、最初から認証に失敗するように見えることです。これは通常、ユーザーが認証されている間に DB でパスワードを変更したときに発生します。ユーザーを無効にして再度ログインしようとした後、使用しようとしているパスワードに関係なく、Tomcat でログインできません。これを修正するには、Tomcat を再起動するだけです。
DataSourceRealm クラス (拡張クラス) にブレークポイントを設定すると、通常は tomcat が認証メソッドを呼び出しますが、特別なケースでは TC は DataSourceRealm で何も呼び出しません。どうしてこれなの?ある種のキャッシングはありますか?これについては何も文書化されていません。
もう 1 つ: ユーザー名の文字を大文字に変更すると、多くの場合うまくいきます。そのため、aDmin としてログインできますが、admin としてログインすることはできません (aDmin を使用すると、期待どおりに DataSourceRealm が呼び出されます)。これにより、ユーザーが何らかの形でキャッシュされていると確信できます。