Tomcat Web アプリケーションで特定の URL へのアクセスを制限したいと考えています。特定のパターンに適合する URL へのアクセスを 3 つの既知の IP アドレスのみに許可する必要があります。
例えばhttp://example.com:1234/abc/personId
どうすればこれを達成できますか?
Tomcat Web アプリケーションで特定の URL へのアクセスを制限したいと考えています。特定のパターンに適合する URL へのアクセスを 3 つの既知の IP アドレスのみに許可する必要があります。
例えばhttp://example.com:1234/abc/personId
どうすればこれを達成できますか?
org.apache.catalina.filters.RemoteAddrFilterを使用して、保護するURLにマップします。構成の詳細については、 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filterを参照してください。
server.xml でこれを行うことができます。
<Valve
className="org.apache.catalina.valves.RemoteAddrValve"
deny="117.40.83.*,122.224.95.*,119.255.28.*,218.8.245.*,218.85.139.*,219.117.197.*,124.89.39.*,58.18.172.*,180.153.225.*"
/>
(これらは実際の IP アドレスです: 所有者の皆様、理由はご存知でしょう :-|) が、ご覧のとおり、これは実際にはイネーブラーではなくブロッカーです。より良い解決策は、Apache HTTPD をその前に Deny All ステートメントと Allow From ステートメントで配置することです。これにより、サービスへのアクセスに必要な 3 つの IP アドレスのみを許可できます。
次のようなものを使用してipsをブロックでき、プロキシの背後にいる場合:
<Context path="/manager" docBase="manager" reloadable="true" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteIpValve"/>
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/>
</Context>
次の理由から、IP アドレスによるアクセスを制限しません。
x-forwarded-for
プロキシがヘッダーをサポートしていないゲートウェイ デバイスの背後にある顧客は、ゲートウェイ デバイスの IP だけを持つことになります。IP を信頼すると、ゲートウェイの背後にある全員が信頼されます。ここでも、一部の顧客にアクセスを許可する場合を想定しています。代わりに、一部の呼び出しに特定のユーザーのみがアクセスできるシステムを実行する必要がある場合は、認証を使用します。この目的には、SSL クライアント側の証明書が非常にうまく機能します。または、 OAuthなどを使用することもできます。