認証

セキュリティはインターネット上で公開するアプリケーションにとって重要です。インターネット アプリケーションに関するセキュリティ問題に対処するため、Java サーブレット API バージョン 2.2 の仕様書では、Web アプリケーション内部のリソースへのユーザ アクセスを制御するための認証メカニズムが定義されています。JRun では、Java サーブレット API に基づいて、最新のセキュリティ メカニズムをサポートしています。

認証メカニズムはロール ベースです。つまり、Web アプリケーションにアクセスするすべてのユーザには 1 つまたは複数のロールが割り当てられます。ロールの例は、manager、developer、および customer です。

アプリケーション開発者は、Web アプリケーション、またはアプリケーションを構成する個々のリソースに用途別ロールを割り当てることができます。JRun では、ユーザに Web アプリケーション リソースへのアクセス権限が与えられる前に、ユーザが認証されていること (つまりログインしていること)、およびユーザにリソースへのアクセス権を持つロールが割り当てられていることが確認されます。 Web アプリケーションの非認可アクセスは、非認可アクセスであることを示す HTTP 403 エラーとなります。

認証には、ユーザに関する情報をWeb サイトに保存する必要があります。この情報には、各ユーザに割り当てられているロールが含まれています。また、ユーザ アクセスを認証する Web サイトには通常、ログイン メカニズムが実装され、パスワードによって各ユーザの ID を検証します。Web サイトでユーザが承認されると、サイトはユーザのロールが判別できます。

認証の例

認証メカニズムがどのように行われるかを示すには、例を示すのが最適です。この例では、developer のロールを割り当てられているユーザだけが Web アプリケーションにアクセスできます。

次に示す手順でこのメカニズムを説明します。

  1. ユーザは Web アプリケーション リソースを要求します。Web アプリケーションでは、アプリケーションからページが返される前に要求が認証されなければなりません。

    認証の必要条件は、アプリケーション開発者が Web アプリケーション レベルで 設定します。JRun サーバーによって実行される Web アプリケーションでは、認証 を個別に有効または無効に設定できます。

  2. アプリケーションを実行するアプリケーション サーバーは要求をトラップし、
    ユーザにログインを要求します。

    ユーザがすでにログインしている場合、この手順は省略されます。

  3. ユーザは、ユーザ名とパスワードを指定してログインします。
  4. ログインが無効の場合、JRun からユーザに HTTP 401 エラー (非認可アクセス) が返されます。
  5. ユーザ名とパスワードが有効であれば、アプリケーション サーバーは、ユーザがアプリケーションへのアクセスに必要なロールが割り当てられているかどうかを判別します。
  6. ユーザがリソースへのアクセス権を持っていない場合、JRun からユーザに
    HTTP 403 エラー (非認可アクセス) が返されます。
  7. ユーザがリソースへのアクセス権を持っている場合、アプリケーション サーバーは要求されたページのサービスを実行します。

この例からわかるように、Web アプリケーションとアプリケーションを実行するアプリケーション サーバーが連動することで認証が実行されます。アプリケーションは認証が必要かどうかを指定し、必要な場合は、アプリケーションへのアクセスに必要なユーザのロールを指定します。JRun サーバーは、Web アプリケーションが認証を必要としていることを認識して、ユーザ アクセスを検証するメカニズムを実施します。

ユーザ、グループ、およびロール

認証は各ユーザに割り当てられているロールに基づいて行われます。ユーザが Web アプリケーションにアクセスするには、アプリケーションにアクセスする権限を与えられているロールがユーザに割り当てられている必要があります。

ユーザ、グループ、およびロールの 3 つのエンティティから構成される階層によってユーザを配置します。次の図は、この階層を示します。

この図に示すように、ユーザにはグループを割り当てたり、ロールを直接割り当てることができます。グループを使用すると、ユーザを 1 つにまとめて、ユーザ グループ全体に特定のロールを割り当てることができます。

この図では、enigineering、employees、および external の 3 つのグループにユーザが分類されています。ユーザとグループには、特定のロールである、administrator、internal、developer、customer、manager、および all が割り当てられます。

アプリケーション認証とサーバー認証

認証には 2 つの異なる部分があります。Web サイトでアプリケーション認証を行うには、両方とも実装する必要があります。

認証の最初の部分は、アプリケーション レベルで行われます。アプリケーション開発者は、アプリケーションへのアクセス権を持つロールを割り当てます。認証のこの部分は定義段階と考えることができます。つまり、アプリケーション開発者は、アプリケーションにアクセスするのに必要なアクセス ロールを定義します。アプリケーションの認証権の設定の詳細については、"アプリケーション認証の設定"を参照してください。

認証の2 番目の部分は、アプリケーションを実行するアプリケーション サーバーによって行われます。アプリケーション サーバーでは、ユーザの証明を検証します。通常はログイン メカニズムによってユーザを認証し、次に Web アプリケーションに対するユーザのアクセス権を認証します。認証のこの部分を実施段階と考えることができます。認証に関するアプリケーション サーバーの設定の詳細については、
"サーバー認証メカニズムの制御"を参照してください。

これらの 2 つの認証段階は互いに独立しています。つまり、アプリケーション開発者は、Web アプリケーションを実行するアプリケーション サーバーが実際にどのように認証を行っているかを知る必要はありません。開発者に関係のあるのは、アクセス権を指定する部分だけです。

サーバーが認証を実施する時期

認証は要求があるたびに行われます。JRun サーバーは Web アプリケーションに対するすべての要求を確認して認証します。

1 台の JRun サーバーで複数のアプリケーションを処理できるので、JRun サーバー内の 1 つのアプリケーションへのアクセス権を持つユーザは、JRun サーバー内の同じアクセス権を持つほかのすべてのアプリケーションにもアクセスできます。

JRun 認証メカニズムの設定

JRun 認証メカニズムを設定するには、プロパティ ファイルを使用します。JRun 管理コンソール (JMC) によって認証を制御することはできません。

JRun の 1 つのインストールに関連付けられているすべての JRun サーバーの認証メカニズムの既定の設定は global.properties ファイルに保存されます。個々の JRun サーバーの既定の設定を変更する場合は、該当するサーバーの local.properties ファイルの設定を変更します。

JRun 認証メカニズムの既定の設定は次のとおりです。

# 認証
authentication.service=propfile 
authentication.class=allaire.jrun.servlet.ResourceAuthenticator
authentication.propfile.class=allaire.jrun.security.PropertyFileAuthent
ication 
authentication.propfile.filename={jrun.rootdir}/lib/users.properties 

これらの設定は JRun 認証サービスの名前を propfile と定義し、認証メカニズムを定義する Java クラスの名前を指定して、users.properties ファイルの場所を指定します。JRun サーバーで実装されている認証メカニズムでは、users.properties を使用してユーザ、グループ、およびロールに関する情報を保持します。このファイルの詳細については、"既定の JRun 認証メカニズムの使用法"を参照してください。

JRun サーバーの JRun 認証メカニズムを無効にするには、次のように、
local.properties にある webapp.services プロパティから認証サービスを削除します。

# global.properties から継承された
# 既定の webapp.services プロパティ設定値
# webapp.services=scheduler,logging,session,authentication,jsp,file
# 認証を削除する修正されたプロパティ
webapp.services=scheduler,logging,session,jsp,file

このプロパティ設定は、JRun サービスの一覧から JRun 認証メカニズムのサービスを削除し、JRun サーバーの認証が行われないようにします。