1

販売されたアプリケーション用に tomcat6 でいくつかのページを保護しようとしています。2 つを除くほとんどの URL で URL パターンを使用して保護することに成功しました (以下のコードで 2 つのアスタリスクでマークされています)。これら 2 つの URL は、ビューを決定するパラメーターを受け取るという点で異なります。これら 2 つのビューを制限したいので、以下に示すように、ブロック/保護/認証する正確な URL を指定しました。しかし、Tomcat はそれらを保護しません。

 <security-constraint>
            <web-resource-collection>
                    <web-resource-name>TopBraid</web-resource-name>
                    <description>Restrict few pages that need security.</description>
                    <url-pattern>/tbl/admin/*</url-pattern>
                    <url-pattern>/tbl/sparql/*</url-pattern>
                    **<url-pattern>/tbl/swp?_viewClass=appConfig:ServerConfigEditor</url-pattern>**
                    **<url-pattern>/tbl/swp?_viewClass=adminConfig:AdminEditPage</url-pattern>**
                    <url-pattern>/tbl/sp_reset</url-pattern>
                    <url-pattern>/tbl/sp_redeploy</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <role-name>SERVER_ADMINS</role-name>
            </auth-constraint>
    </security-constraint>
    <security-role>
            <role-name>SERVER_ADMINS</role-name>
    </security-role>
    <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>TopBraid</realm-name>
            <form-login-config>
                    <form-login-page>/logon.html</form-login-page>
                    <form-error-page>/logonError.html</form-error-page>
            </form-login-config>
    </login-config>
    <security-constraint>
            <web-resource-collection>
                <web-resource-name>Public</web-resource-name>
                <description>Matches any page.</description>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
    </security-constraint>

JSR 仕様がそれらを無効なパターンと呼ぶ可能性があることは知っています。パターンが受け入れられるように何らかの方法で指定できるかどうか疑問に思っています。または、上記の 2 つの URL へのアクセスを制限する他の方法はありますか?

4

1 に答える 1

1

上記のように、特定の URL パラメーターとその値へのアクセスを制限すること/tbl/swp?_viewClass=tblconfig:ConfigEditor /tbl/swp?_viewClass=admins:AdminsEditorPageは、Web サーバーまたはアプリケーション サーバーからはできません。このタイプのフィルタリング/URL 制限は、これらのビューに対して一意のセッションを作成することにより、アプリケーション自体で実行する必要があります。

アプリケーション サーバーが着信 URL を解析するとき、最初の「?」に到達すると、その仕事は完了します。これは、アプリケーションに渡される最初のパラメーターです。ここから、あらゆる種類のフィルタリング/アクセス制御をアプリケーションで処理する必要があります。

于 2013-02-28T22:11:38.983 に答える