11.2. EJB アプリケーションセキュリティー
11.2.1. セキュリティーアイデンティティー (ID)
11.2.1.1. EJB のセキュリティーアイデンティティー
EJB は、他のコンポーネントでメソッドを呼び出すときに使用するアイデンティティーを指定できます。これは EJB のセキュリティーアイデンティティー (または呼び出しアイデンティティー) です。
デフォルトでは、EJB は独自の呼び出し側アイデンティティーを使用します。アイデンティティーは特定のセキュリティーロールに設定することもできます。特定のセキュリティーロールを使用すると、内部 EJB のみへのコンポーネントセットのアクセスを制限する場合など、セグメント化されたセキュリティーモデルを構築するのに便利です。
11.2.1.2. EJB のセキュリティーアイデンティティーの設定
EJB のセキュリティーアイデンティティーは、セキュリティー設定の
<security-identity>
タグより設定されます。
デフォルトでは、
<security-identity>
タグが存在しないと、EJB の独自の呼び出し側アイデンティティーが使用されます。
例11.3 呼び出し側と同じになるように EJB のセキュリティーアイデンティティーを設定する
この例は、現在の呼び出し側のアイデンティティーと同じになるように、EJB によって実行されたメソッド呼び出しのセキュリティーアイデンティティーを設定します。
<security-identity>
要素の宣言を指定しない場合、この挙動がデフォルトになります。
<ejb-jar> <enterprise-beans> <session> <ejb-name>ASessionBean</ejb-name> <!-- ... --> <security-identity> <use-caller-identity/> </security-identity> </session> <!-- ... --> </enterprise-beans> </ejb-jar>
例11.4 特定ロールに EJB のセキュリティーアイデンティティーを設定する
特定のロールにセキュリティーアイデンティティーを設定するには、
<security-identity>
タグの中に <run-as>
および <role-name>
タグを使用します。
<ejb-jar> <enterprise-beans> <session> <ejb-name>RunAsBean</ejb-name> <!-- ... --> <security-identity> <run-as> <description>A private internal role</description> <role-name>InternalRole</role-name> </run-as> </security-identity> </session> </enterprise-beans> <!-- ... --> </ejb-jar>
デフォルトでは、
<run-as>
を使用すると anonymous
という名前のプリンシパルが発信呼び出しへ割り当てられます。違うプリンシパルを割り当てる場合は <run-as-principle>
を使用します。
<session> <ejb-name>RunAsBean</ejb-name> <security-identity> <run-as-principal>internal</run-as-principal> </security-identity> </session>
注記
サーブレット要素内に
<run-as>
要素と <run-as-principal>
要素を使用することもできます。
以下も参照してください。