第6章 Jakarta Enterprise Beans アプリケーションセキュリティー

6.1. セキュリティーアイデンティティー

6.1.1. Jakarta Enterprise Beans セキュリティー ID について

Jakarta Enterprise Beans は、他のコンポーネントでメソッドを呼び出す際に使用するアイデンティティーを指定できます。これは、Jakarta Enterprise Beans セキュリティーアイデンティティーで、呼び出しアイデンティティーとも呼ばれます。

デフォルトでは、Jakarta Enterprise Beans は独自の呼び出し元アイデンティティーを使用します。アイデンティティーは、特定のセキュリティーロールに設定することもできます。特定のセキュリティーロールの使用は、セグメント化されたセキュリティーモデルを構築する場合に便利です。たとえば、内部 Jakarta Enterprise Beans のみへのコンポーネントセットへのアクセスを制限します。

6.1.2. Jakarta Enterprise Beans のセキュリティーアイデンティティーの設定

Jakarta Enterprise Beans のセキュリティーアイデンティティーは、セキュリティー設定の <security-identity> タグで指定します。<security-identity> タグが存在する場合は、Jakarta Enterprise Beans の呼び出し元アイデンティティーがデフォルトで使用されます。

例: Jakarta Enterprise Beans のセキュリティーアイデンティティーを同じ呼び出し元として設定

この例では、Jakarta Enterprise Beans によって作成されたメソッド呼び出しのセキュリティーアイデンティティーを、現在の呼び出し元のアイデンティティーと同じに設定します。<security-identity> 要素の宣言を指定しない場合は、この動作がデフォルトになります。

<ejb-jar>
  <enterprise-beans>
     <session>
        <ejb-name>ASessionBean</ejb-name>
        ...
        <security-identity>
          <use-caller-identity/>
        </security-identity>
     </session>
     ...
  </enterprise-beans>
</ejb-jar>

例: Jakarta Enterprise Beans のセキュリティーアイデンティティーの特定のロールへの設定

セキュリティーアイデンティティーを特定のロールに設定するには、<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>
注記

また、servlet 要素内に <run-as> および <run-as-principal> 要素を使用することもできます。