セキュリティはインターネット上で公開するアプリケーションにとって重要です。インターネット アプリケーションに関するセキュリティ問題に対処するため、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 アプリケーションにアクセスできます。
認証の必要条件は、アプリケーション開発者が Web アプリケーション レベルで 設定します。JRun サーバーによって実行される Web アプリケーションでは、認証 を個別に有効または無効に設定できます。
ユーザがすでにログインしている場合、この手順は省略されます。
この例からわかるように、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 管理コンソール (JMC) によって認証を制御することはできません。
JRun の 1 つのインストールに関連付けられているすべての JRun サーバーの認証メカニズムの既定の設定は global.properties
ファイルに保存されます。個々の JRun サーバーの既定の設定を変更する場合は、該当するサーバーの local.properties
ファイルの設定を変更します。
# 認証
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 サーバーの認証が行われないようにします。