2

Tomcat7 サーバーにデプロイされたすべての Web アプリケーションにセキュリティ制約を適用したいと考えています。これを行うために、Realm と Valve をセットアップしました。私の理解では、context.xml の内容は、サーバーにデプロイされたすべてのアプリに含まれます。その部分は、あらゆる種類の構成を追加できるため、機能しているように見え、デプロイされたさまざまなアプリ コンテキストに含まれる効果を確認できます。これは、Web アプリ全体で一貫性を確保するのに非常に効果的です。

うまくいかないように見えるのは、以下のようなセキュリティ制約を web.xml の外で定義しようとすることです。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>myServletWAR</web-resource-name>
        <url-pattern>*.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>my_role</role-name>
    </auth-constraint>
</security-constraint>

Contextタグの間のcontext.xmlでやっています。Tomcat からの苦情はありませんが、パスワードなしでアプリにアクセスできるなど、セキュリティ上の制約は適用されません。上記のcontext.xmlの制約により、次のことがわかります。

Aug 14, 2013 3:03:32 PM org.apache.catalina.authenticator.AuthenticatorBase invoke
FINE:  Not subject to any constraint

...ログに記録され、認証なしで「保護された」リソースにアクセスできます。

もちろん、同じ制約を webapps の web.xml に移動すると、期待される制約の動作が得られますが、特定のサーバーにデプロイされたすべてのアプリに制約が一貫して適用されるようにする必要があります。

セキュリティ制約は Web アプリ内にある必要がありますか? context.xml にない場合、複数の (まだ展開されている) Web アプリ間でセキュリティ制約を定義するにはどうすればよいですか?

これはまさに私が設定しようとしているものですが、web.xml の外側 (上記) で制約を適用したいと考えています。繰り返しますが、サーバー全体で一貫性が保たれるようにします。

私は別の同様の質問を見ましたが、コードベースからサーブレット API を使用せずに Tomcat 構成でこれを行う方法を見つけようとしています (それは既に書かれています)。

ありがとう!

4

1 に答える 1

1

質問を投稿してから 2 番目に、次のことに気付きました。

$CATALINA_BASE/conf/web.xml私が探していた答えでした。

予想どおり、ルート要素は web-app であり、コンテンツはデプロイされた各 Web アプリ (context.xml各コンテキストなど) に追加され、security-constraint作業が追加されます。

Tomcat を再起動する必要がありました (明らかに、そのファイルの変更に対して自動デプロイされません) が、これは本番環境では変更されないため、問題ではありません。

于 2013-08-14T21:44:08.607 に答える