認証済みのユーザが可能な操作を認可のレベルによって制限できます。認可のレベルはユーザのロールに基づいています。例えば、会員管理アプリケーションでは、管理者にはすべての会員の個人情報を見ることを認可し、会員には自身の個人情報だけを見ることを認可します。
認可を行う方法にはプログラムによる制御とdeployment descriptorによる制御の2つの方法があります。
Servlet/EJBのAPIを使用して認証済みのユーザやロールによる認可を行うコードをアプリケーション内に記述できます。
アプリケーションの開発後に変更することができないため、動作環境によってはアプリケーションの変更が必要となることがあります。
Servlet/EJBのAPIについてはServlet 2.5/EJB 3.0の仕様を参照してください。
deployment descriptorに記述した内容にしたがって、コンテナが認可を行います。
アプリケーションの開発後に動作環境に合わせてdeployment descriptorを変更することができるため、通常はアプリケーションを変更する必要はありません。
deployment descriptorによる制限対象は以下の2つです。
Webアプリケーションのリソース
EJBアプリケーションのメソッド
定義の詳細についてはJava EE 5/Servlet 2.5/EJB 3.0の仕様を参照してください。
認可に失敗した場合
認可に失敗した場合はステータスコード:403が返されます。
認可に失敗した場合はアクセスしたインタフェースの種類によって、クライアントに以下の例外が通知されます。
経由するインタフェース | 通知される例外 |
---|---|
Businessインタフェース | javax.ejb.EJBException |
java.rmi.Remoteを継承するRemote Businessインタフェース | java.rmi.AccessException |
Local Businessインタフェース | javax.ejb.AccessLocalException |
Remoteインタフェース(EJB2.1クライアントビュー) | java.rmi.AccessException |
Localインタフェース(EJB2.1クライアントビュー) | javax.ejb.AccessLocalException |