Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Tomcat単独構成環境で特定ディレクトリのアクセスを制限

Cobos4iの開発環境はTomcatの単独構成環境になります。Webサーバーと連携してTomcatを使用する場合には、Webサーバー側特定ディレクトリのアクセス制限は、Webサーバー側のhttpd.confに定義ができます。
TipsではTomcatの単独構成環境時に特定ディレクトリへのアクセスを制限する方法をご紹介します。

Tomcatの環境を構築する場合、一般的にはWebサーバーとTomcatを連携させて運用することが多いです。
社内向けの小規模なシステムや検証環境/開発環境などでは単独構成で運用することもあります。

特定ディレクトリへのアクセス制限

例えば、C:\SystemObjects\Cobos4i\Tomcat\webapps\cobos4i\temp へブラウザからのアクセス制限を行いたい場合には、対象アプリケーションのweb.xml (C:\SystemObjects\Cobos4i\Tomcat\webapps\cobos4i\WEB-INF\web.xml)へ以下のように記述します。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Block profile directory</web-resource-name>
        <url-pattern>/temp/*</url-pattern>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>

web.xmlの設定はTomcatを再起動した際に反映されます。
反映後には、ブラウザからのアクセス時にHTTPエラー 403が表示されて、/cobos4i/tempにアクセスができない状態となります。

エラーページのカスタマイズ

対象アプリケーションのweb.xml (C:\SystemObjects\Cobos4i\Tomcat\webapps\cobos4i\WEB-INF\web.xml)を編集することでエラーページをカスタマイズすることも可能です。

    <error-page>
      <error-code>403</error-code>
      <location>/WEB-INF/error/403.jsp</location>
    </error-page> 

HTTPエラー 403のエラー画面を変更したい場合には、web.xmlへ設定を追加後C:\SystemObjects\Cobos4i\Tomcat\webapps\cobos4i\WEB-INF\error\403.jspにエラー表示用のjspを配置することでエラー画面を403.jspに変更することができます。
 ※静的なhtmlを表示することも可能です。
以下はシンプルにメッセージを表示する例ですが、エラーメッセージ画面の見た目もカスタマイズ可能です。

例) 403.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
String message     = (String)  request.getAttribute("javax.servlet.error.message");
String requestUri  = (String)  request.getAttribute("javax.servlet.error.request_uri");
String servletName = (String)  request.getAttribute("javax.servlet.error.servlet_name");
Throwable ex       = (Throwable) request.getAttribute("javax.servlet.error.exception");
%>

<h1>アクセスできません</h1>
<p>ステータス: <%= statusCode %></p>
<p>対象URI: <%= requestUri %></p>
<p>メッセージ: <%= message %></p>