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


Enterprise Java Bean(EJB)は、<security-identity> 要素を使用してコンポーネントでメソッドを呼び出すときに別の EJB を使用する必要があります。

図8.2 Java EE Security Identity データモデル

Java EE Security Identity Model の図
呼び出しアイデンティティーは、現在の呼び出し元または特定のロールになります。アプリケーションアセンブラーは、<security-identity> 子要素で <use-caller-identity> 要素を使用します。これは、現在の呼び出し元のアイデンティティーを EJB によるメソッド呼び出しのセキュリティーアイデンティティーとして伝播する必要があることを示します。呼び出し元のアイデンティティーの伝搬は、明示的な <security-identity> 要素宣言がない場合に使用されるデフォルトです。
または、アプリケーションアセンブラーは <run-as> または <role-name> 子要素を使用して、<role-name> 要素値によって提供される特定のセキュリティーロールを EJB によるメソッド呼び出しのセキュリティーアイデンティティーとして使用する必要があると指定できます。
これにより、EJBContext.getCallerPrincipal() メソッドが示すように呼び出し元のアイデンティティーは変更されません。代わりに、呼び出し元のセキュリティーロールは、<run-as> または <role-name> 要素の値で指定された単一のロールに設定されます。
<run-as> 要素のユースケースの 1 つは、外部クライアントが内部 EJB にアクセスできないようにします。この動作は、外部クライアントに割り当てられないロールへのアクセスを制限する内部 EJB <method-permission> 要素を割り当てます。その後、内部 EJB を使用する EJB は、restricted ロールと同等の <run-as> または <role-name> で設定されます。以下の記述子フラグメントは、<security-identity> 要素の使用例を示しています。
<ejb-jar>
    <enterprise-beans>
        <session>
            <ejb-name>ASessionBean</ejb-name>
            <!-- ... -->
            <security-identity>
                <use-caller-identity/>
            </security-identity>
        </session>
        <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>jboss-ejb3.xml ファイルの Bean に関連付ける必要があります。以下のフラグメントは、前の例の internal という名前のプリンシパルを RunAsBean に関連付けます。
<session>
    <ejb-name>RunAsBean</ejb-name>
    <security-identity>
        <run-as-principal>internal</run-as-principal>
    </security-identity>
</session>

<run-as> 要素は web.xml ファイルのサーブレット定義でも利用可能です。以下の例は、InternalRole ロールをサーブレットに割り当てる方法を示しています。
  <servlet>
    <servlet-name>AServlet</servlet-name>
    <!-- ... -->
    <run-as> 
        <role-name>InternalRole</role-name>
    </run-as>
  </servlet>

このサーブレットからの呼び出しは、匿名 プリンシパル に関連付けられます。<run-as-principal> 要素は jboss-web.xml ファイルで利用でき、run-as ロールとともに特定のプリンシパルを割り当てます。以下の例は、internal という名前のプリンシパルを上記のサーブレットに関連付ける方法を示しています。
  <servlet>
    <servlet-name>AServlet</servlet-name>
    <run-as-principal>internal</run-as-principal>
  </servlet>

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る