Tomcat 7.0.32(ここでは疑似XMLで記述)で次のようにレルムをネストしようとしています。
<CombinedRealm>
<LockoutRealm>
<DataSourceRealm/>
</LockoutRealm>
<UserDatabaseRealm/>
</CombinedRealm>
これは機能していないようです-Tomcatにレルムを2つ以上のレベルでネストすることは可能ですか?ログに警告が表示されます。
No rules found matching 'Server/Service/Engine/Realm/Realm/Realm'.
背後にある考え方は、Webサービスには、ロックアウトしてはならない重要なユーザー(DOSなど)と、lockoutRealmをアクティブにする必要のある弱いパスワードを持つ通常のユーザーがいるということです。他の人もこの状況にあったと思います。
これを実現する別の方法(たとえば、LockoutRealmのホワイトリスト)がある場合は、お知らせください。
シングルサインオンも必要です。
ロックアウトしないアカウントのリストを使用して既存のLockoutRealmコードを拡張することもできますが、自分のレルムを作成することにそれほど熱心ではありません。そのレベルのカスタムコードをTomcatに追加したくないのです。他の人のセットアップは複雑で、Tomcatを更新するたびに壊れることがあります。
助けてくれてありがとう!
これが私のテスト設定のserver.xmlの関連部分です:
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.CombinedRealm">
<!-- Lockout realm for the DB users -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- PRIMARY: DataSourceRealm with user DB -->
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/authority"
userTable="user" userNameCol="username"
userCredCol="password" digest="SHA"
userRoleTable="user_role" roleNameCol="rolename" />
</Realm>
<!-- FALLBACK:
This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>