プロキシ構成


プロキシ構成では、次のトピックについて説明します。

はじめに

企業カスタマにとって、企業内でセキュリティ保護されたコンピューティング環境を設定することは重要であり、プロキシ構成は、セキュリティ保護されたコンピューティング環境の必須要素です。プロキシ構成は、セキュリティを保護する防壁として機能し、プロキシサーバによって、インターネットとイントラネット間のすべてのトラフィックが監視されることを保証します。これは、通常、イントラネット内部の企業ファイアウォールにより施行されるセキュリティ保護の不可欠な部分です。イントラネット Web ページで、アプレットを配備するのに Java Plug-in を使用したり、アプリケーションを実行するのに Java Web Start を使用したりすることを望む企業カスタマは、プロキシサポートも設定することができます。このサポートは、Java Plug-in や Java Web Start がイントラネット環境で機能するために必要なもので、Java コントロールパネルを介して設定できます。

Java コントロールパネル

Java コントロールパネルでは、[ネットワーク設定] サブパネルに次の 4 つのプロキシオプションがあります。

[ブラウザの設定を使用]

[ブラウザの設定を使用] を選択した場合、プロキシ情報は完全にブラウザを介して入力されます。Internet Explorer の場合は、[ツール]>[インターネット オプション] で [接続] タブを開き、[ローカル エリア ネットワーク (LAN) の設定] を選択します。Netscape の場合は、[編集] > [設定] で [カテゴリ] の下の [詳細] を選択して、[プロキシ] を選択します。この機能方法と、ブラウザを介して設定される 3 つのタイプの接続 (直接、手動、および自動) については、以下のセクションで説明します。

[プロキシサーバを使用]

Java コントロールパネルで [プロキシサーバを使用] を選択した場合、2 つの選択肢があります。

  1. プロキシサーバの [アドレス] と [ポート] を設定し、ローカルアドレスに対してはプロキシサーバをバイパスするオプションを選択する
  2. [HTTP]、[Secure]、[FTP]、[Socks] の各接続に対して、個別にプロキシサーバを設定する。プロキシサーバを使用しないようにするアドレスの一覧を指定できる

[自動プロキシ設定スクリプトを使用]

[自動プロキシ設定スクリプトを使用] を選択した場合、FindProxyForURL(URL url) という名前の JavaScript の位置を示す URL を入力しなければなりません。この JavaScript によって返されるプロキシサーバが URL に使用されます。このスクリプトに対するサポートは、以下の「自動プロキシ構成」で説明する内容と同じです。

[直接接続]

直接接続ではプロキシを使用しません。モバイルユーザがモデムを介して会社に接続するような特定の状況では、イントラネット環境への直接接続が必要になります。これらの場合には、プロキシは使用すべきではありません。

Java Plug-in と Java Web Start でブラウザからプロキシ情報を取得する方法

ブラウザのプラットフォームが異なると、プロキシ情報を格納する方法も異なるため、プロキシ情報を取得する汎用的な方法はありません。ブラウザとプラットフォームの組み合わせ 2 種類によって、プロキシ情報を取得する方法を説明します。

Microsoft Internet Explorer: Internet Explorer では、プロキシ情報は Windows レジストリの同じキーセット内に格納されます。Java Plug-in と Java Web Start では、この情報をレジストリから直接抽出します。

Mozilla: Mozilla では、プロキシ情報をローカルマシンのユーザプロファイルディレクトリ内の設定ファイルに格納します。また、プロキシ情報を特定するための公開 API を利用できます。Java Plug-in では Mozilla の公開 API を使用し、Java Web Start では設定ファイルを読み取って解析し、プロキシ情報を取得します。

Netscape Navigator: Navigator では、プロキシ情報をローカルマシンのユーザプロファイルディレクトリ内の設定ファイルに格納します。Java Plug-in と Java Web Start では、このファイルを読み取って解析し、プロキシ情報を取得します。

Java Plug-in と Java Web Start では、プロキシ情報を起動時に取得します。Java Plug-in または Java Web Start の起動後にプロキシ設定を変更した場合、Java コンソールの p オプションを使用して、プロキシ情報を強制的に再ロードします。Java Web Start はアプリケーションごとに再起動するため、以後の起動時には自動的に新しいプロキシ情報が使用されます。

手動プロキシ構成

Internet Explorer、Mozilla、および Netscape Navigator では手動プロキシ構成がサポートされます。ユーザは各プロトコルについてプロキシサーバとポートを指定することができます。また、ユーザは、1 つのプロキシサーバおよびすべてのプロトコル用のポートを指定することもできます。イントラネット環境内で 2 つのマシンを接続する場合に、プロキシサーバの負荷を最小限に抑えるため、プロキシサーバを完全に無視するサイトがあります。これを行う場合、ネットワーク管理者およびユーザは、ブラウザのプロキシ設定でプロキシサーバのバイパスリストを指定します。 

Internet Explorer: Java Plug-in と Java Web Start では、このプロトコルに関連付けられたプロキシサーバおよびポート設定を認識およびサポートします。IE は、プロキシサーババイパスリスト内のさまざまな構文をサポートします。以下にその構文を示します。 

たとえば、プロキシサーババイパスリストに「121.141.23.5;*.eng;http://*.com」を指定すると、次の場合、常にブラウザはプロキシをバイパスします。

現在のところ、Java Plug-in と Java Web Start でサポートするのは、IE のプロキシサーババイパスリストの最初の 2 つの構文です。さらに、IE では、プロキシサーババイパスリストを使用しない、ローカル (イントラネット) アドレス用プロキシサーバのバイパスもサポートされます。Java Plug-in と Java Web Start では、URL ホスト名がプレーンな (つまり、ホスト名に「.」が含まれない) 場合、プロキシサーバをバイパスすることにより、このオプションをサポートします。 

Mozilla と Netscape Navigator: Java Plug-in と Java Web Start では、このプロトコルに関連付けられたプロキシサーバおよびポート設定を認識およびサポートします。たとえば、Mozilla のプロキシサーバパイパスリストに「.eng,.sun.com」 を指定すると、URL ホスト名が「.eng」または「.sun.com」で終わる場合、常にプロキシがバイパスされます。Java Plug-in と Java Web Start では、Mozilla と Navigator のプロキシサーババイパスリスト内で、この構文をフルサポートします。

使用するブラウザでの手動プロキシ構成の詳細は、ブラウザのユーザガイドを参照してください。

自動プロキシ構成

自動プロキシ構成はブラウザ内で、拡張子が .pac または .js の JavaScript ファイルを含む特定の URL を設定することでサポートされます。このファイルには、FindProxyForURL という関数が含まれます。この関数には、ブラウザが接続要求を受信するとき、どのプロキシサーバを使用するかを決定するロジックが含まれます。この関数は、特定のイントラネット環境で、システム管理者により記述されます。ブラウザは、起動時に JavaScript ファイルの URL を認識し、直接接続を使用してローカルマシンにダウンロードします。その後、新規接続を確立する必要がある場合、ブラウザは常に JavaScript ファイル内の FindProxyForURL JavaScript 関数を実行してプロキシ情報を取得し、接続を設定します。 

Java Plug-in

Internet Explorer: 起動時に、Java Plug-in は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が実行され、Internet Explorer の JavaScript エンジンを使用してプロキシ情報の取得が行われます。

Mozilla/Netscape Navigator: 起動時に、Java Plug-in は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が実行され、Mozilla や Navigator の JavaScript エンジンを使用してプロキシ情報の取得が行われます。

Java Web Start

Windows: 起動時に、Java Web Start は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が実行され、Internet Explorer の JavaScript エンジンを使用してプロキシ情報の取得が行われます。

Linux/Solaris: 起動時に、Java Web Start は、直接接続を使用して JavaScript ファイルをローカルマシンにダウンロードします。その後、接続の新規確立が必要になるたびに、FindProxyForURL 関数が解析され、もっとも適切な情報が推測されて、プロキシ情報の取得が行われます。

FindProxyForURL について

JavaScript エンジンについて、すべてのプラットフォームの Java Plug-in と、Windows 上の Java Web Start に対して、次の事項が当てはまります。

  1. JavaScript 関数 FindProxyForURL から呼び出し可能な、JavaScript ヘルパー関数が多数存在します。Java Plug-in と Java Web Start は、これらの関数の独自実装を提供して、自動プロキシ構成を完全にエミュレートします。これらのヘルパー関数の実装については、以下に注意してください。
    • dnsResolve 関数は、ホストが IP アドレスでない場合、常に空の文字列を返す
    • isResolvable 関数は、ホストが IP アドレスでない場合、常に false を返す
    • isInNet 関数は、ホストが IP アドレスでない場合、常に false を返す
  2. FindProxyForURL 関数を実行する場合、プロキシ情報が常に文字列として返されます。Java Plug-in と Java Web Start では、次の方法で設定を抽出します。
    • 文字列に「DIRECT」が含まれる場合、Java Plug-in と Java Web Start は直接接続と見なす
    • 文字列に「PROXY」が含まれる場合、最初のプロキシ設定を接続に使用する
    • 文字列に「SOCKS」が含まれる場合、SOCKS バージョン 4 を接続に使用する
    • それ以外の場合、文字列内のプロキシ情報は不正になる。この場合、Java Plug-in と Java Web Start は直接接続と見なす

使用するブラウザでの自動プロキシ構成の詳細は、ブラウザのユーザガイドを参照してください。

J2SE 5.0 における java.net.ProxySelector API

指定されたホストのプロキシ設定を特定しなければならないことがあります。プロキシ設定を調べることで、適切なプロキシサーバを通じてホストに接続するためのコードをより適切に記述することができます。J2SE 5.0 では、プロキシ設定をサポートする新しい API として java.net.ProxySelector があります。次は簡単なコードの例です。

private Proxy findProxy(URI uri)
{

     try
     {
          ProxySelector selector = ProxySelector.getDefault();
          List<Proxy> proxyList = selector.select(uri);

          if (proxyList.size() > 1)
               return proxyList.get(0);
     }
     catch (IllegalArgumentException e)
     {
     }

     return Proxy.NO_PROXY;
}