18.4. EJB アプリケーションセキュリティー
18.4.1. セキュリティーアイデンティティー
18.4.1.1. EJB セキュリティーアイデンティティー
EJB は、他のコンポーネントでメソッドを呼び出す際に使用するアイデンティティーを指定できます。これは、EJB セキュリティーアイデンティティー で、呼び出しアイデンティティーとも呼ばれます。
デフォルトでは、EJB は独自の呼び出し元アイデンティティーを使用します。アイデンティティーは、特定のセキュリティーロールに設定することもできます。特定のセキュリティーロールの使用は、セグメント化されたセキュリティーモデルを構築する場合に便利です。たとえば、内部 EJB のみへのコンポーネントセットへのアクセスを制限します。
18.4.1.2. EJB のセキュリティーアイデンティティーの設定
EJB のセキュリティーアイデンティティーは、セキュリティー設定の
<security-identity>
タグで指定します。
デフォルトでは、
<security-identity>
タグが存在しない場合、EJB 自身の呼び出し元 ID が使用されます。
例18.30 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>
例18.31 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-principal>
を使用します。
<session> <ejb-name>RunAsBean</ejb-name> <security-identity> <run-as-principal>internal</run-as-principal> </security-identity> </session>
サーブレットでのセキュリティー ID の指定
また、servlet 要素内に
<run-as>
および <run-as-principal>
要素を使用することもできます。
以下も参照してください。