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> 要素を使用することもできます。