Web アプリケーション認証の理解

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

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

アプリケーション開発者は、Web アプリケーション、またはアプリケーションを構成する各リソースに用途別ロールを割り当てることができます。JRun は、ユーザーに Web アプリケーションリソースへのアクセス権を与える前に、ユーザーが認証されていること (つまりログインしていること)、そしてリソースへのアクセス権を持つロールに割り当てられていることを確認します。Web アプリケーションへのアクセスが認可されないと、HTTP 401 (未認可) ステータスコードが表示されます。

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

認証はリクエストがあるたびに行われます。JRun サーバは Web アプリケーションに対するすべてのリクエストをチェックし、そして認証します。

認証の例

このセクションの例では、認証メカニズムがどのように機能するかを示します。この例では、developer のロールに割り当てられたユーザーだけが Web アプリケーションにアクセスできます。次の図で、基本的な認証メカニズムで起こる一連のリクエストとレスポンスを示します。

ユーザーがログインしようとします。JRun は 401 エラーを返します。ユーザーは再びログインし、今回は成功します。JRun はページを返します。

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

  1. ユーザーが Web アプリケーションリソースをリクエストします。

    Web アプリケーションでは、アプリケーションからページが返される前にリクエストが認証される必要があります。アプリケーション開発者は、Web アプリケーションレベルでの認証条件を設定します。JRun サーバで実行される Web アプリケーションは、認証を個別に有効または無効に設定できます。

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

    ユーザーが既にログインしている場合、アプリケーションサーバはこの手順をスキップします。

  3. ログインするためには、ユーザー名とパスワードを入力して、アプリケーションサーバに送り返します。
  4. ログインが無効な場合、JRun からユーザーに HTTP 401 (未認可アクセス) ステータスコードが返されます。一定回数のログインが試行されて 401 コードが返されると、一部のブラウザではエラーページが表示されます。
  5. ユーザー名とパスワードが有効であれば、アプリケーションサーバは、アプリケーションへのアクセスに必要なロールにユーザーが割り当てられているかどうかを検証します。
  6. ユーザーがリソースへのアクセス権を持っていない場合、JRun からユーザーに HTTP 403 (禁止) ステータスコードが返されます。
  7. ユーザーがアプリケーションへのアクセス権を持っている場合、アプリケーションサーバはリクエストされたページを返します。

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

ユーザー、グループ、ロールの理解

認証はユーザーに割り当てられているロールに基づいて実行されます。ユーザーが Web アプリケーションにアクセスするには、アプリケーションへのアクセスが承認されているロールに割り当てられている必要があります。

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

ユーザー、グループ、ロールが相互に関連している Web と、それらがアプリケーションへのアクセスを提供するかを示します。

この図でわかるように、ユーザーはグループまたは直接ロールに割り当てることができます。グループを使用すると、ユーザーを 1 つにまとめて、そのユーザーグループ全体を特定のロールに割り当てることができます。ユーザーが、enigineering、employees、external の 3 つのグループに分類されています。ユーザーとグループは、administrator、internal、developer、customer、manager、all の特定のロールに割り当てられます。

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

認証には 2 つの処理があります。Web サイトで Web アプリケーション認証を行うには、どちらも実装する必要があります。

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

認証の 2 つめの処理は、アプリケーションを実行するサーバによって行われます。アプリケーションサーバは、ユーザーの証明を検証します。通常はログインメカニズムによってユーザーを確認して、Web アプリケーションへのユーザーのアクセス権を認証します。この処理は実施ステージと考えることができます。認証に関するアプリケーションサーバの設定の詳細については、『JRun 管理者ガイド』を参照してください。

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

JRun 認証メカニズムの設定

JRun サーバの認証メカニズムを構成するセキュリティモジュールを選択するには、JMC を使用します。デフォルトの認証メカニズムはサーブレットの仕様で定義され、ユーザーストアとも呼ばれる、ロールとユーザーが保管されているファイルを含んでいます。

デフォルトのユーザーモジュールは JRun デフォルトユーザーモジュール、デフォルトのロールモジュールは JRun デフォルトロールモジュールです。ユーザーとロールは各 JRun サーバの /<JRun のルートディレクトリ>/servers/<サーバ名>/SERVER-INF/jrun-users.xml ファイルに保管されます。このファイルはデフォルト認証メカニズムのユーザーストアとして機能します。

JMC の [JRun ユーザーマネージャ] パネルと [JRun ロールマネージャ] パネルを使用して、選択した認証モジュールのユーザーやロールを追加または削除します。

1 台の JRun サーバでは複数のアプリケーションを実行できるので、JRun サーバ内にあるアプリケーションへのアクセス権を持つユーザーは、同じサーバ内にある他のアプリケーションにも同じアクセス権でアクセスできます。

認証メカニズムは、デフォルトまたは独自のメカニズムのいずれも実装することができます。JRun には、デフォルトのメカニズムに加えて JMC で次の選択肢が用意されています。

ロールマネージャやユーザーマネージャの使用の詳細については、『JRun 管理者ガイド』または JMC のオンラインヘルプを参照してください。